From 1b7fc6c8037b63f7fca8c99b97ccbb1871ab33c1 Mon Sep 17 00:00:00 2001 From: Siu Kwan Lam Date: Tue, 14 Aug 2012 16:56:33 -0700 Subject: [PATCH] Add test for target machines (native + PTX) --- test/targetmachines.py | 47 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 test/targetmachines.py diff --git a/test/targetmachines.py b/test/targetmachines.py new file mode 100644 index 0000000..a91411d --- /dev/null +++ b/test/targetmachines.py @@ -0,0 +1,47 @@ +from llvm.core import * +from llvm.ee import TargetMachine, EngineBuilder, print_registered_targets +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')) + + def test_ptx(self): + m, func = self._build_module() + func.calling_convention = CC_PTX_KERNEL # set calling conv + ptxtm = TargetMachine.lookup(arch='ptx64', cpu='compute_20', + features='-double') + self.assertTrue(ptxtm.triple) + self.assertTrue(ptxtm.cpu) + self.assertTrue(ptxtm.feature_string) + ptxasm = ptxtm.emit_assembly(m).decode('utf-8') + self.assertIn('foo', ptxasm) + self.assertIn('map_f64_to_f32', ptxasm) + self.assertIn('compute_10', 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 + +if __name__ == '__main__': + unittest.main() +