text: from llvm.core import *
  from llvm.passes import *
  from llvm.ee import *
  import llvm
  from llvm.test_llvmpy import TestCase
  from os.path import dirname, join as join_path
  
  
  import unittest
  import re
  
  class TestLoopVectorizer(TestCase):
      def test_loop_vectorizer(self):
          if llvm.version <= (3, 1):
              return # SKIP
  
          re_vector = re.compile("<\d+ x \w+>")
  
          tm = TargetMachine.new(opt=3)
  
          # Build passes
          pm = build_pass_managers(tm, opt=3, loop_vectorize=True, fpm=False).pm
  
          # Load test module
          asmfile = join_path(dirname(__file__), 'loopvectorize.ll')
          with open(asmfile) as asm:
              mod = Module.from_assembly(asm)
  
          before = str(mod)
  
          pm.run(mod)
  
          after = str(mod)
          self.assertNotEqual(after, before)
  
          before_vectors = re_vector.findall(before)
          self.assertFalse(before_vectors)
          after_vectors = re_vector.findall(after)
          self.assertLess(len(before_vectors), len(after_vectors))
  
  
  if __name__ == '__main__':
      unittest.main()
  