mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-11-04 05:17:07 +00:00 
			
		
		
		
	I think it was written by Pawel Worach. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128268 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			131 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/python
 | 
						|
import re, string, sys, os, time
 | 
						|
 | 
						|
DEBUG = 0
 | 
						|
testDirName = 'llvm-test'
 | 
						|
test      = ['compile', 'llc', 'jit', 'cbe']
 | 
						|
exectime     = ['llc-time', 'jit-time', 'cbe-time',]
 | 
						|
comptime     = ['llc', 'jit-comptime', 'compile']
 | 
						|
 | 
						|
(tp, exp) = ('compileTime_', 'executeTime_')
 | 
						|
 | 
						|
def parse(file):
 | 
						|
  f=open(file, 'r')
 | 
						|
  d = f.read()
 | 
						|
  
 | 
						|
  #Cleanup weird stuff
 | 
						|
  d = re.sub(r',\d+:\d','', d)
 | 
						|
   
 | 
						|
  r = re.findall(r'TEST-(PASS|FAIL|RESULT.*?):\s+(.*?)\s+(.*?)\r*\n', d)
 | 
						|
   
 | 
						|
  test = {}
 | 
						|
  fname = ''
 | 
						|
  for t in r:
 | 
						|
    if DEBUG:
 | 
						|
      print t
 | 
						|
    if t[0] == 'PASS' or t[0] == 'FAIL' :
 | 
						|
      tmp = t[2].split(testDirName)
 | 
						|
      
 | 
						|
      if DEBUG:
 | 
						|
        print tmp
 | 
						|
      
 | 
						|
      if len(tmp) == 2:
 | 
						|
        fname = tmp[1].strip('\r\n')
 | 
						|
      else:
 | 
						|
        fname = tmp[0].strip('\r\n')
 | 
						|
      
 | 
						|
      if not test.has_key(fname) :
 | 
						|
        test[fname] = {}
 | 
						|
      
 | 
						|
      for k in test:
 | 
						|
        test[fname][k] = 'NA'
 | 
						|
        test[fname][t[1]] = t[0]
 | 
						|
        if DEBUG:
 | 
						|
          print test[fname][t[1]]
 | 
						|
    else :
 | 
						|
      try:
 | 
						|
        n = t[0].split('RESULT-')[1]
 | 
						|
        
 | 
						|
        if DEBUG:
 | 
						|
          print n;
 | 
						|
        
 | 
						|
        if n == 'llc' or n == 'jit-comptime' or n == 'compile':
 | 
						|
          test[fname][tp + n] = float(t[2].split(' ')[2])
 | 
						|
          if DEBUG:
 | 
						|
            print test[fname][tp + n]
 | 
						|
        
 | 
						|
        elif n.endswith('-time') :
 | 
						|
            test[fname][exp + n] = float(t[2].strip('\r\n'))
 | 
						|
            if DEBUG:
 | 
						|
              print test[fname][exp + n]
 | 
						|
        
 | 
						|
        else :
 | 
						|
          print "ERROR!"
 | 
						|
          sys.exit(1)
 | 
						|
      
 | 
						|
      except:
 | 
						|
          continue
 | 
						|
 | 
						|
  return test
 | 
						|
 | 
						|
# Diff results and look for regressions.
 | 
						|
def diffResults(d_old, d_new):
 | 
						|
 | 
						|
  for t in sorted(d_old.keys()) :
 | 
						|
    if DEBUG:
 | 
						|
      print t
 | 
						|
        
 | 
						|
    if d_new.has_key(t) :
 | 
						|
    
 | 
						|
      # Check if the test passed or failed.
 | 
						|
      for x in test:
 | 
						|
        if d_old[t].has_key(x):
 | 
						|
          if d_new[t].has_key(x):
 | 
						|
            if d_old[t][x] == 'PASS':
 | 
						|
              if d_new[t][x] != 'PASS':
 | 
						|
                print t + " *** REGRESSION (" + x + ")\n"
 | 
						|
            else:
 | 
						|
              if d_new[t][x] == 'PASS':
 | 
						|
                print t + " * NEW PASS (" + x + ")\n"
 | 
						|
                
 | 
						|
          else :
 | 
						|
            print t + "*** REGRESSION (" + x + ")\n"
 | 
						|
        
 | 
						|
        # For execution time, if there is no result, its a fail.
 | 
						|
        for x in exectime:
 | 
						|
          if d_old[t].has_key(tp + x):
 | 
						|
            if not d_new[t].has_key(tp + x):
 | 
						|
              print t + " *** REGRESSION (" + tp + x + ")\n"
 | 
						|
                
 | 
						|
          else :
 | 
						|
            if d_new[t].has_key(tp + x):
 | 
						|
              print t + " * NEW PASS (" + tp + x + ")\n"
 | 
						|
 | 
						|
       
 | 
						|
        for x in comptime:
 | 
						|
          if d_old[t].has_key(exp + x):
 | 
						|
            if not d_new[t].has_key(exp + x):
 | 
						|
              print t + " *** REGRESSION (" + exp + x + ")\n"
 | 
						|
                
 | 
						|
          else :
 | 
						|
            if d_new[t].has_key(exp + x):
 | 
						|
              print t + " * NEW PASS (" + exp + x + ")\n"
 | 
						|
              
 | 
						|
    else :
 | 
						|
      print t + ": Removed from test-suite.\n"
 | 
						|
    
 | 
						|
 | 
						|
#Main
 | 
						|
if len(sys.argv) < 3 :
 | 
						|
    print 'Usage:', sys.argv[0], \
 | 
						|
          '<old log> <new log>'
 | 
						|
    sys.exit(-1)
 | 
						|
 | 
						|
d_old = parse(sys.argv[1])
 | 
						|
d_new = parse(sys.argv[2])
 | 
						|
 | 
						|
 | 
						|
diffResults(d_old, d_new)
 | 
						|
 | 
						|
 |