From b97dbba105b06c7f600ade55b9d2243c46447f49 Mon Sep 17 00:00:00 2001 From: Ilan Schnell Date: Sat, 22 Sep 2012 20:52:20 -0500 Subject: [PATCH] add target machine test class --- llvm/test_llvmpy.py | 53 ++++++++++++++++++++++++++++++++++++++ test/targetmachines.py | 58 ------------------------------------------ 2 files changed, 53 insertions(+), 58 deletions(-) delete mode 100644 test/targetmachines.py diff --git a/llvm/test_llvmpy.py b/llvm/test_llvmpy.py index a18ff0d..98549b4 100644 --- a/llvm/test_llvmpy.py +++ b/llvm/test_llvmpy.py @@ -484,6 +484,59 @@ tests.append(TestObjCache) # --------------------------------------------------------------------------- +class TestTargetMachines(unittest.TestCase): + '''Exercise target machines + + Require PTX backend + ''' + def test_native(self): + m, _ = self._build_module() + tm = le.EngineBuilder.new(m).select_target() + + self.assertTrue(tm.target_name) + self.assertTrue(tm.target_data) + self.assertTrue(tm.target_short_description) + self.assertTrue(tm.triple) + self.assertIn('foo', tm.emit_assembly(m).decode('utf-8')) + self.assertTrue(le.get_host_cpu_name()) + + def test_ptx(self): + if lc.HAS_PTX: + arch = 'ptx64' + elif lc.HAS_NVPTX: + arch = 'nvptx64' + else: + return # skip this test + m, func = self._build_module() + func.calling_convention = lc.CC_PTX_KERNEL # set calling conv + ptxtm = le.TargetMachine.lookup(arch=arch, cpu='compute_20') + self.assertTrue(ptxtm.triple) + self.assertTrue(ptxtm.cpu) + ptxasm = ptxtm.emit_assembly(m).decode('utf-8') + self.assertIn('foo', ptxasm) + if lc.HAS_NVPTX: + self.assertIn('.address_size 64', ptxasm) + self.assertIn('compute_20', ptxasm) + + def _build_module(self): + m = Module.new('TestTargetMachines') + + fnty = Type.function(Type.void(), []) + func = m.add_function(fnty, name='foo') + + bldr = Builder.new(func.append_basic_block('entry')) + bldr.ret_void() + m.verify() + return m, func + + def _build_bad_archname(self): + with self.assertRaises(RuntimeError): + tm = TargetMachine.lookup("ain't no arch name") + +tests.append(TestTargetMachines) + +# --------------------------------------------------------------------------- + class TestNative(unittest.TestCase): def _make_module(self): diff --git a/test/targetmachines.py b/test/targetmachines.py deleted file mode 100644 index 4e3717b..0000000 --- a/test/targetmachines.py +++ /dev/null @@ -1,58 +0,0 @@ -from llvm.core import * -from llvm.ee import * -import unittest - -class TestTargetMachines(unittest.TestCase): - '''Exercise target machines - - Require PTX backend - ''' - def test_native(self): - m, _ = self._build_module() - - tm = EngineBuilder.new(m).select_target() - - self.assertTrue(tm.target_name) - self.assertTrue(tm.target_data) - self.assertTrue(tm.target_short_description) - self.assertTrue(tm.triple) - self.assertIn('foo', tm.emit_assembly(m).decode('utf-8')) - self.assertTrue(get_host_cpu_name()) - - def test_ptx(self): - if HAS_PTX: - arch = 'ptx64' - elif HAS_NVPTX: - arch = 'nvptx64' - else: - return # skip this test - m, func = self._build_module() - func.calling_convention = CC_PTX_KERNEL # set calling conv - ptxtm = TargetMachine.lookup(arch=arch, cpu='compute_20') - self.assertTrue(ptxtm.triple) - self.assertTrue(ptxtm.cpu) - ptxasm = ptxtm.emit_assembly(m).decode('utf-8') - self.assertIn('foo', ptxasm) - if HAS_NVPTX: - self.assertIn('.address_size 64', ptxasm) - self.assertIn('compute_20', ptxasm) - - def _build_module(self): - m = Module.new('TestTargetMachines') - - fnty = Type.function(Type.void(), []) - func = m.add_function(fnty, name='foo') - - bldr = Builder.new(func.append_basic_block('entry')) - bldr.ret_void() - m.verify() - return m, func - - def _build_bad_archname(self): - with self.assertRaises(RuntimeError): - tm = TargetMachine.lookup("ain't no arch name") - - -if __name__ == '__main__': - unittest.main() -