mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 02:33:06 +01:00
Python compat - print statement
Make sure all print statements are compatible with Python 2 and Python3 using the `from __future__ import print_function` statement. Differential Revision: https://reviews.llvm.org/D56249 llvm-svn: 350307
This commit is contained in:
parent
65df098609
commit
bc5eec4c75
@ -6,6 +6,7 @@
|
|||||||
# License. See LICENSE.TXT for details.
|
# License. See LICENSE.TXT for details.
|
||||||
#
|
#
|
||||||
#===------------------------------------------------------------------------===#
|
#===------------------------------------------------------------------------===#
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
from .common import LLVMObject
|
from .common import LLVMObject
|
||||||
from .common import c_object_p
|
from .common import c_object_p
|
||||||
@ -605,7 +606,7 @@ def register_enumerations():
|
|||||||
]
|
]
|
||||||
for enum_class, enum_spec in enums:
|
for enum_class, enum_spec in enums:
|
||||||
for name, value in enum_spec:
|
for name, value in enum_spec:
|
||||||
print name, value
|
print(name, value)
|
||||||
enum_class.register(name, value)
|
enum_class.register(name, value)
|
||||||
return enums
|
return enums
|
||||||
|
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
from .base import TestBase
|
from .base import TestBase
|
||||||
from ..core import OpCode
|
from ..core import OpCode
|
||||||
from ..core import MemoryBuffer
|
from ..core import MemoryBuffer
|
||||||
@ -11,5 +13,5 @@ class TestBitReader(TestBase):
|
|||||||
def test_parse_bitcode(self):
|
def test_parse_bitcode(self):
|
||||||
source = self.get_test_bc()
|
source = self.get_test_bc()
|
||||||
m = parse_bitcode(MemoryBuffer(filename=source))
|
m = parse_bitcode(MemoryBuffer(filename=source))
|
||||||
print m.target
|
print(m.target)
|
||||||
print m.datalayout
|
print(m.datalayout)
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
from .base import TestBase
|
from .base import TestBase
|
||||||
from ..core import MemoryBuffer
|
from ..core import MemoryBuffer
|
||||||
from ..core import PassRegistry
|
from ..core import PassRegistry
|
||||||
@ -127,7 +129,7 @@ class TestCore(TestBase):
|
|||||||
self.assertEqual(inst.opcode, inst_list[i][1])
|
self.assertEqual(inst.opcode, inst_list[i][1])
|
||||||
for op in range(len(inst)):
|
for op in range(len(inst)):
|
||||||
o = inst.get_operand(op)
|
o = inst.get_operand(op)
|
||||||
print o.name
|
print(o.name)
|
||||||
o.dump()
|
o.dump()
|
||||||
inst.dump()
|
inst.dump()
|
||||||
i += 1
|
i += 1
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
from .base import TestBase
|
from .base import TestBase
|
||||||
|
|
||||||
from ..disassembler import Disassembler, Option_UseMarkup
|
from ..disassembler import Disassembler, Option_UseMarkup
|
||||||
@ -38,6 +40,6 @@ class TestDisassembler(TestBase):
|
|||||||
disassembler = Disassembler(triple)
|
disassembler = Disassembler(triple)
|
||||||
disassembler.set_options(Option_UseMarkup)
|
disassembler.set_options(Option_UseMarkup)
|
||||||
count, s = disassembler.get_instruction(sequence)
|
count, s = disassembler.get_instruction(sequence)
|
||||||
print s
|
print(s)
|
||||||
self.assertEqual(count, 4)
|
self.assertEqual(count, 4)
|
||||||
self.assertEqual(s, '\tpush\t{<reg:r4>, <reg:lr>}')
|
self.assertEqual(s, '\tpush\t{<reg:r4>, <reg:lr>}')
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#
|
#
|
||||||
# All configuration values have a default; values that are commented out
|
# All configuration values have a default; values that are commented out
|
||||||
# serve to show the default.
|
# serve to show the default.
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import sys, os
|
import sys, os
|
||||||
from datetime import date
|
from datetime import date
|
||||||
@ -234,14 +235,14 @@ for name in os.listdir(command_guide_path):
|
|||||||
header = f.readline().rstrip('\n')
|
header = f.readline().rstrip('\n')
|
||||||
|
|
||||||
if len(header) != len(title):
|
if len(header) != len(title):
|
||||||
print >>sys.stderr, (
|
print((
|
||||||
"error: invalid header in %r (does not match title)" % (
|
"error: invalid header in %r (does not match title)" % (
|
||||||
file_subpath,))
|
file_subpath,)), file=sys.stderr)
|
||||||
if ' - ' not in title:
|
if ' - ' not in title:
|
||||||
print >>sys.stderr, (
|
print((
|
||||||
("error: invalid title in %r "
|
("error: invalid title in %r "
|
||||||
"(expected '<name> - <description>')") % (
|
"(expected '<name> - <description>')") % (
|
||||||
file_subpath,))
|
file_subpath,)), file=sys.stderr)
|
||||||
|
|
||||||
# Split the name out of the title.
|
# Split the name out of the title.
|
||||||
name,description = title.split(' - ', 1)
|
name,description = title.split(' - ', 1)
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import random
|
import random
|
||||||
|
|
||||||
@ -173,7 +175,7 @@ class KScriptGenerator:
|
|||||||
|
|
||||||
def generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript):
|
def generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript):
|
||||||
""" Generate a random Kaleidoscope script based on the given parameters """
|
""" Generate a random Kaleidoscope script based on the given parameters """
|
||||||
print "Generating " + filename
|
print("Generating " + filename)
|
||||||
print(" %d functions, %d elements per function, %d functions between execution" %
|
print(" %d functions, %d elements per function, %d functions between execution" %
|
||||||
(numFuncs, elementsPerFunc, funcsBetweenExec))
|
(numFuncs, elementsPerFunc, funcsBetweenExec))
|
||||||
print(" Call weighting = %f" % callWeighting)
|
print(" Call weighting = %f" % callWeighting)
|
||||||
@ -200,7 +202,7 @@ def generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callW
|
|||||||
script.writeEmptyLine()
|
script.writeEmptyLine()
|
||||||
script.writeFinalFunctionCounts()
|
script.writeFinalFunctionCounts()
|
||||||
funcsCalled = len(script.calledFunctions)
|
funcsCalled = len(script.calledFunctions)
|
||||||
print " Called %d of %d functions, %d total" % (funcsCalled, numFuncs, script.totalCallsExecuted)
|
print(" Called %d of %d functions, %d total" % (funcsCalled, numFuncs, script.totalCallsExecuted))
|
||||||
timingScript.writeTimingCall(filename, numFuncs, funcsCalled, script.totalCallsExecuted)
|
timingScript.writeTimingCall(filename, numFuncs, funcsCalled, script.totalCallsExecuted)
|
||||||
|
|
||||||
# Execution begins here
|
# Execution begins here
|
||||||
@ -216,4 +218,4 @@ dataSets = [(5000, 3, 50, 0.50), (5000, 10, 100, 0.10), (5000, 10, 5, 0.10), (5
|
|||||||
for (numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting) in dataSets:
|
for (numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting) in dataSets:
|
||||||
filename = "test-%d-%d-%d-%d.k" % (numFuncs, elementsPerFunc, funcsBetweenExec, int(callWeighting * 100))
|
filename = "test-%d-%d-%d-%d.k" % (numFuncs, elementsPerFunc, funcsBetweenExec, int(callWeighting * 100))
|
||||||
generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript)
|
generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript)
|
||||||
print "All done!"
|
print("All done!")
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
class TimingScriptGenerator:
|
class TimingScriptGenerator:
|
||||||
"""Used to generate a bash script which will invoke the toy and time it"""
|
"""Used to generate a bash script which will invoke the toy and time it"""
|
||||||
def __init__(self, scriptname, outputname):
|
def __init__(self, scriptname, outputname):
|
||||||
@ -47,7 +49,7 @@ def splitScript(inputname, libGenScript, timingScript):
|
|||||||
infile = open(inputname, "r")
|
infile = open(inputname, "r")
|
||||||
libfile = open(libname, "w")
|
libfile = open(libname, "w")
|
||||||
callfile = open(callname, "w")
|
callfile = open(callname, "w")
|
||||||
print "Splitting %s into %s and %s" % (inputname, callname, libname)
|
print("Splitting %s into %s and %s" % (inputname, callname, libname))
|
||||||
for line in infile:
|
for line in infile:
|
||||||
if not line.startswith("#"):
|
if not line.startswith("#"):
|
||||||
if line.startswith("print"):
|
if line.startswith("print"):
|
||||||
@ -67,4 +69,4 @@ script_list = ["test-5000-3-50-50.k", "test-5000-10-100-10.k", "test-5000-10-5-1
|
|||||||
|
|
||||||
for script in script_list:
|
for script in script_list:
|
||||||
splitScript(script, libGenScript, timingScript)
|
splitScript(script, libGenScript, timingScript)
|
||||||
print "All done!"
|
print("All done!")
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import random
|
import random
|
||||||
|
|
||||||
@ -178,7 +180,7 @@ class KScriptGenerator:
|
|||||||
|
|
||||||
def generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript):
|
def generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript):
|
||||||
""" Generate a random Kaleidoscope script based on the given parameters """
|
""" Generate a random Kaleidoscope script based on the given parameters """
|
||||||
print "Generating " + filename
|
print("Generating " + filename)
|
||||||
print(" %d functions, %d elements per function, %d functions between execution" %
|
print(" %d functions, %d elements per function, %d functions between execution" %
|
||||||
(numFuncs, elementsPerFunc, funcsBetweenExec))
|
(numFuncs, elementsPerFunc, funcsBetweenExec))
|
||||||
print(" Call weighting = %f" % callWeighting)
|
print(" Call weighting = %f" % callWeighting)
|
||||||
@ -205,7 +207,7 @@ def generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callW
|
|||||||
script.writeEmptyLine()
|
script.writeEmptyLine()
|
||||||
script.writeFinalFunctionCounts()
|
script.writeFinalFunctionCounts()
|
||||||
funcsCalled = len(script.calledFunctions)
|
funcsCalled = len(script.calledFunctions)
|
||||||
print " Called %d of %d functions, %d total" % (funcsCalled, numFuncs, script.totalCallsExecuted)
|
print(" Called %d of %d functions, %d total" % (funcsCalled, numFuncs, script.totalCallsExecuted))
|
||||||
timingScript.writeTimingCall(filename, numFuncs, funcsCalled, script.totalCallsExecuted)
|
timingScript.writeTimingCall(filename, numFuncs, funcsCalled, script.totalCallsExecuted)
|
||||||
|
|
||||||
# Execution begins here
|
# Execution begins here
|
||||||
@ -221,4 +223,4 @@ dataSets = [(5000, 3, 50, 0.50), (5000, 10, 100, 0.10), (5000, 10, 5, 0.10), (5
|
|||||||
for (numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting) in dataSets:
|
for (numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting) in dataSets:
|
||||||
filename = "test-%d-%d-%d-%d.k" % (numFuncs, elementsPerFunc, funcsBetweenExec, int(callWeighting * 100))
|
filename = "test-%d-%d-%d-%d.k" % (numFuncs, elementsPerFunc, funcsBetweenExec, int(callWeighting * 100))
|
||||||
generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript)
|
generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript)
|
||||||
print "All done!"
|
print("All done!")
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
class TimingScriptGenerator:
|
class TimingScriptGenerator:
|
||||||
"""Used to generate a bash script which will invoke the toy and time it"""
|
"""Used to generate a bash script which will invoke the toy and time it"""
|
||||||
def __init__(self, scriptname, outputname):
|
def __init__(self, scriptname, outputname):
|
||||||
@ -47,7 +49,7 @@ def splitScript(inputname, libGenScript, timingScript):
|
|||||||
infile = open(inputname, "r")
|
infile = open(inputname, "r")
|
||||||
libfile = open(libname, "w")
|
libfile = open(libname, "w")
|
||||||
callfile = open(callname, "w")
|
callfile = open(callname, "w")
|
||||||
print "Splitting %s into %s and %s" % (inputname, callname, libname)
|
print("Splitting %s into %s and %s" % (inputname, callname, libname))
|
||||||
for line in infile:
|
for line in infile:
|
||||||
if not line.startswith("#"):
|
if not line.startswith("#"):
|
||||||
if line.startswith("print"):
|
if line.startswith("print"):
|
||||||
@ -67,4 +69,4 @@ script_list = ["test-5000-3-50-50.k", "test-5000-10-100-10.k", "test-5000-10-5-1
|
|||||||
|
|
||||||
for script in script_list:
|
for script in script_list:
|
||||||
splitScript(script, libGenScript, timingScript)
|
splitScript(script, libGenScript, timingScript)
|
||||||
print "All done!"
|
print("All done!")
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import random
|
import random
|
||||||
|
|
||||||
@ -173,7 +175,7 @@ class KScriptGenerator:
|
|||||||
|
|
||||||
def generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript):
|
def generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript):
|
||||||
""" Generate a random Kaleidoscope script based on the given parameters """
|
""" Generate a random Kaleidoscope script based on the given parameters """
|
||||||
print "Generating " + filename
|
print("Generating " + filename)
|
||||||
print(" %d functions, %d elements per function, %d functions between execution" %
|
print(" %d functions, %d elements per function, %d functions between execution" %
|
||||||
(numFuncs, elementsPerFunc, funcsBetweenExec))
|
(numFuncs, elementsPerFunc, funcsBetweenExec))
|
||||||
print(" Call weighting = %f" % callWeighting)
|
print(" Call weighting = %f" % callWeighting)
|
||||||
@ -200,7 +202,7 @@ def generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callW
|
|||||||
script.writeEmptyLine()
|
script.writeEmptyLine()
|
||||||
script.writeFinalFunctionCounts()
|
script.writeFinalFunctionCounts()
|
||||||
funcsCalled = len(script.calledFunctions)
|
funcsCalled = len(script.calledFunctions)
|
||||||
print " Called %d of %d functions, %d total" % (funcsCalled, numFuncs, script.totalCallsExecuted)
|
print(" Called %d of %d functions, %d total" % (funcsCalled, numFuncs, script.totalCallsExecuted))
|
||||||
timingScript.writeTimingCall(filename, numFuncs, funcsCalled, script.totalCallsExecuted)
|
timingScript.writeTimingCall(filename, numFuncs, funcsCalled, script.totalCallsExecuted)
|
||||||
|
|
||||||
# Execution begins here
|
# Execution begins here
|
||||||
@ -216,4 +218,4 @@ dataSets = [(5000, 3, 50, 0.50), (5000, 10, 100, 0.10), (5000, 10, 5, 0.10), (5
|
|||||||
for (numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting) in dataSets:
|
for (numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting) in dataSets:
|
||||||
filename = "test-%d-%d-%d-%d.k" % (numFuncs, elementsPerFunc, funcsBetweenExec, int(callWeighting * 100))
|
filename = "test-%d-%d-%d-%d.k" % (numFuncs, elementsPerFunc, funcsBetweenExec, int(callWeighting * 100))
|
||||||
generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript)
|
generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript)
|
||||||
print "All done!"
|
print("All done!")
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Currently any print-out from the custom tool is interpreted as a crash
|
# Currently any print-out from the custom tool is interpreted as a crash
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
# RUN: llc < %t.ll -march=nvptx64 -mcpu=sm_30 | FileCheck -check-prefixes=CHECK,CHECK_P64 %t.ll
|
# RUN: llc < %t.ll -march=nvptx64 -mcpu=sm_30 | FileCheck -check-prefixes=CHECK,CHECK_P64 %t.ll
|
||||||
# RUN: llc < %t.ll -march=nvptx -mcpu=sm_30 | FileCheck -check-prefixes=CHECK,CHECK_P32 %t.ll
|
# RUN: llc < %t.ll -march=nvptx -mcpu=sm_30 | FileCheck -check-prefixes=CHECK,CHECK_P32 %t.ll
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
from itertools import product
|
from itertools import product
|
||||||
from string import Template
|
from string import Template
|
||||||
|
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
# RUN: python %s > %t.ll
|
# RUN: python %s > %t.ll
|
||||||
# RUN: llc < %t.ll -march=nvptx64 -mcpu=sm_70 -mattr=+ptx61 | FileCheck %t.ll
|
# RUN: llc < %t.ll -march=nvptx64 -mcpu=sm_70 -mattr=+ptx61 | FileCheck %t.ll
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
from itertools import product
|
from itertools import product
|
||||||
from string import Template
|
from string import Template
|
||||||
|
|
||||||
|
@ -67,42 +67,44 @@
|
|||||||
# CHECK: c %r4, 136(%r3)
|
# CHECK: c %r4, 136(%r3)
|
||||||
# CHECK: jge [[LABEL]]
|
# CHECK: jge [[LABEL]]
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
branch_blocks = 10
|
branch_blocks = 10
|
||||||
main_size = 0xffd8
|
main_size = 0xffd8
|
||||||
|
|
||||||
print '@global = global i32 0'
|
print('@global = global i32 0')
|
||||||
|
|
||||||
print 'define void @f1(i8 *%base, i32 *%stop, i32 %limit) {'
|
print('define void @f1(i8 *%base, i32 *%stop, i32 %limit) {')
|
||||||
print 'entry:'
|
print('entry:')
|
||||||
print ' br label %before0'
|
print(' br label %before0')
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
||||||
print 'before%d:' % i
|
print('before%d:' % i)
|
||||||
print ' %%bstop%d = getelementptr i32, i32 *%%stop, i64 %d' % (i, i)
|
print(' %%bstop%d = getelementptr i32, i32 *%%stop, i64 %d' % (i, i))
|
||||||
print ' %%bcur%d = load i32 , i32 *%%bstop%d' % (i, i)
|
print(' %%bcur%d = load i32 , i32 *%%bstop%d' % (i, i))
|
||||||
print ' %%btest%d = icmp eq i32 %%limit, %%bcur%d' % (i, i)
|
print(' %%btest%d = icmp eq i32 %%limit, %%bcur%d' % (i, i))
|
||||||
print ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)
|
print(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next))
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
print '%s:' % next
|
print('%s:' % next)
|
||||||
a, b = 1, 1
|
a, b = 1, 1
|
||||||
for i in xrange(0, main_size, 6):
|
for i in xrange(0, main_size, 6):
|
||||||
a, b = b, a + b
|
a, b = b, a + b
|
||||||
offset = 4096 + b % 500000
|
offset = 4096 + b % 500000
|
||||||
value = a % 256
|
value = a % 256
|
||||||
print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)
|
print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset))
|
||||||
print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i)
|
print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i))
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
print ' %%astop%d = getelementptr i32, i32 *%%stop, i64 %d' % (i, i + 25)
|
print(' %%astop%d = getelementptr i32, i32 *%%stop, i64 %d' % (i, i + 25))
|
||||||
print ' %%acur%d = load i32 , i32 *%%astop%d' % (i, i)
|
print(' %%acur%d = load i32 , i32 *%%astop%d' % (i, i))
|
||||||
print ' %%atest%d = icmp eq i32 %%limit, %%acur%d' % (i, i)
|
print(' %%atest%d = icmp eq i32 %%limit, %%acur%d' % (i, i))
|
||||||
print ' br i1 %%atest%d, label %%main, label %%after%d' % (i, i)
|
print(' br i1 %%atest%d, label %%main, label %%after%d' % (i, i))
|
||||||
print ''
|
print('')
|
||||||
print 'after%d:' % i
|
print('after%d:' % i)
|
||||||
|
|
||||||
print ' %dummy = load volatile i32, i32 *@global'
|
print(' %dummy = load volatile i32, i32 *@global')
|
||||||
print ' ret void'
|
print(' ret void')
|
||||||
print '}'
|
print('}')
|
||||||
|
@ -56,12 +56,14 @@
|
|||||||
# CHECK: c %r4, 1036(%r3)
|
# CHECK: c %r4, 1036(%r3)
|
||||||
# CHECK: jge [[LABEL]]
|
# CHECK: jge [[LABEL]]
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
blocks = 256 + 4
|
blocks = 256 + 4
|
||||||
|
|
||||||
print 'define void @f1(i8 *%base, i32 *%stop, i32 %limit) {'
|
print('define void @f1(i8 *%base, i32 *%stop, i32 %limit) {')
|
||||||
print 'entry:'
|
print('entry:')
|
||||||
print ' br label %b0'
|
print(' br label %b0')
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
a, b = 1, 1
|
a, b = 1, 1
|
||||||
for i in xrange(blocks):
|
for i in xrange(blocks):
|
||||||
@ -69,14 +71,14 @@ for i in xrange(blocks):
|
|||||||
value = a % 256
|
value = a % 256
|
||||||
next = 'b%d' % (i + 1) if i + 1 < blocks else 'end'
|
next = 'b%d' % (i + 1) if i + 1 < blocks else 'end'
|
||||||
other = 'end' if 2 * i < blocks else 'b0'
|
other = 'end' if 2 * i < blocks else 'b0'
|
||||||
print 'b%d:' % i
|
print('b%d:' % i)
|
||||||
print ' store volatile i8 %d, i8 *%%base' % value
|
print(' store volatile i8 %d, i8 *%%base' % value)
|
||||||
print ' %%astop%d = getelementptr i32, i32 *%%stop, i64 %d' % (i, i)
|
print(' %%astop%d = getelementptr i32, i32 *%%stop, i64 %d' % (i, i))
|
||||||
print ' %%acur%d = load i32 , i32 *%%astop%d' % (i, i)
|
print(' %%acur%d = load i32 , i32 *%%astop%d' % (i, i))
|
||||||
print ' %%atest%d = icmp eq i32 %%limit, %%acur%d' % (i, i)
|
print(' %%atest%d = icmp eq i32 %%limit, %%acur%d' % (i, i))
|
||||||
print ' br i1 %%atest%d, label %%%s, label %%%s' % (i, other, next)
|
print(' br i1 %%atest%d, label %%%s, label %%%s' % (i, other, next))
|
||||||
|
|
||||||
print ''
|
print('')
|
||||||
print '%s:' % next
|
print('%s:' % next)
|
||||||
print ' ret void'
|
print(' ret void')
|
||||||
print '}'
|
print('}')
|
||||||
|
@ -67,44 +67,46 @@
|
|||||||
# CHECK: cr %r4, [[REG]]
|
# CHECK: cr %r4, [[REG]]
|
||||||
# CHECK: jge [[LABEL]]
|
# CHECK: jge [[LABEL]]
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
branch_blocks = 8
|
branch_blocks = 8
|
||||||
main_size = 0xffcc
|
main_size = 0xffcc
|
||||||
|
|
||||||
print '@global = global i32 0'
|
print('@global = global i32 0')
|
||||||
|
|
||||||
print 'define void @f1(i8 *%base, i8 *%stop, i32 %limit) {'
|
print('define void @f1(i8 *%base, i8 *%stop, i32 %limit) {')
|
||||||
print 'entry:'
|
print('entry:')
|
||||||
print ' br label %before0'
|
print(' br label %before0')
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
||||||
print 'before%d:' % i
|
print('before%d:' % i)
|
||||||
print ' %%bstop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i)
|
print(' %%bstop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i))
|
||||||
print ' %%bcur%d = load i8 , i8 *%%bstop%d' % (i, i)
|
print(' %%bcur%d = load i8 , i8 *%%bstop%d' % (i, i))
|
||||||
print ' %%bext%d = sext i8 %%bcur%d to i32' % (i, i)
|
print(' %%bext%d = sext i8 %%bcur%d to i32' % (i, i))
|
||||||
print ' %%btest%d = icmp eq i32 %%limit, %%bext%d' % (i, i)
|
print(' %%btest%d = icmp eq i32 %%limit, %%bext%d' % (i, i))
|
||||||
print ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)
|
print(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next))
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
print '%s:' % next
|
print('%s:' % next)
|
||||||
a, b = 1, 1
|
a, b = 1, 1
|
||||||
for i in xrange(0, main_size, 6):
|
for i in xrange(0, main_size, 6):
|
||||||
a, b = b, a + b
|
a, b = b, a + b
|
||||||
offset = 4096 + b % 500000
|
offset = 4096 + b % 500000
|
||||||
value = a % 256
|
value = a % 256
|
||||||
print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)
|
print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset))
|
||||||
print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i)
|
print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i))
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
print ' %%astop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i + 25)
|
print(' %%astop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i + 25))
|
||||||
print ' %%acur%d = load i8 , i8 *%%astop%d' % (i, i)
|
print(' %%acur%d = load i8 , i8 *%%astop%d' % (i, i))
|
||||||
print ' %%aext%d = sext i8 %%acur%d to i32' % (i, i)
|
print(' %%aext%d = sext i8 %%acur%d to i32' % (i, i))
|
||||||
print ' %%atest%d = icmp eq i32 %%limit, %%aext%d' % (i, i)
|
print(' %%atest%d = icmp eq i32 %%limit, %%aext%d' % (i, i))
|
||||||
print ' br i1 %%atest%d, label %%main, label %%after%d' % (i, i)
|
print(' br i1 %%atest%d, label %%main, label %%after%d' % (i, i))
|
||||||
print ''
|
print('')
|
||||||
print 'after%d:' % i
|
print('after%d:' % i)
|
||||||
|
|
||||||
print ' %dummy = load volatile i32, i32 *@global'
|
print(' %dummy = load volatile i32, i32 *@global')
|
||||||
print ' ret void'
|
print(' ret void')
|
||||||
print '}'
|
print('}')
|
||||||
|
@ -71,44 +71,46 @@
|
|||||||
# CHECK: cgr %r4, [[REG]]
|
# CHECK: cgr %r4, [[REG]]
|
||||||
# CHECK: jge [[LABEL]]
|
# CHECK: jge [[LABEL]]
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
branch_blocks = 8
|
branch_blocks = 8
|
||||||
main_size = 0xffcc
|
main_size = 0xffcc
|
||||||
|
|
||||||
print '@global = global i32 0'
|
print('@global = global i32 0')
|
||||||
|
|
||||||
print 'define void @f1(i8 *%base, i8 *%stop, i64 %limit) {'
|
print('define void @f1(i8 *%base, i8 *%stop, i64 %limit) {')
|
||||||
print 'entry:'
|
print('entry:')
|
||||||
print ' br label %before0'
|
print(' br label %before0')
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
||||||
print 'before%d:' % i
|
print('before%d:' % i)
|
||||||
print ' %%bstop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i)
|
print(' %%bstop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i))
|
||||||
print ' %%bcur%d = load i8 , i8 *%%bstop%d' % (i, i)
|
print(' %%bcur%d = load i8 , i8 *%%bstop%d' % (i, i))
|
||||||
print ' %%bext%d = sext i8 %%bcur%d to i64' % (i, i)
|
print(' %%bext%d = sext i8 %%bcur%d to i64' % (i, i))
|
||||||
print ' %%btest%d = icmp eq i64 %%limit, %%bext%d' % (i, i)
|
print(' %%btest%d = icmp eq i64 %%limit, %%bext%d' % (i, i))
|
||||||
print ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)
|
print(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next))
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
print '%s:' % next
|
print('%s:' % next)
|
||||||
a, b = 1, 1
|
a, b = 1, 1
|
||||||
for i in xrange(0, main_size, 6):
|
for i in xrange(0, main_size, 6):
|
||||||
a, b = b, a + b
|
a, b = b, a + b
|
||||||
offset = 4096 + b % 500000
|
offset = 4096 + b % 500000
|
||||||
value = a % 256
|
value = a % 256
|
||||||
print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)
|
print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset))
|
||||||
print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i)
|
print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i))
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
print ' %%astop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i + 25)
|
print(' %%astop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i + 25))
|
||||||
print ' %%acur%d = load i8 , i8 *%%astop%d' % (i, i)
|
print(' %%acur%d = load i8 , i8 *%%astop%d' % (i, i))
|
||||||
print ' %%aext%d = sext i8 %%acur%d to i64' % (i, i)
|
print(' %%aext%d = sext i8 %%acur%d to i64' % (i, i))
|
||||||
print ' %%atest%d = icmp eq i64 %%limit, %%aext%d' % (i, i)
|
print(' %%atest%d = icmp eq i64 %%limit, %%aext%d' % (i, i))
|
||||||
print ' br i1 %%atest%d, label %%main, label %%after%d' % (i, i)
|
print(' br i1 %%atest%d, label %%main, label %%after%d' % (i, i))
|
||||||
print ''
|
print('')
|
||||||
print 'after%d:' % i
|
print('after%d:' % i)
|
||||||
|
|
||||||
print ' %dummy = load volatile i32, i32 *@global'
|
print(' %dummy = load volatile i32, i32 *@global')
|
||||||
print ' ret void'
|
print(' ret void')
|
||||||
print '}'
|
print('}')
|
||||||
|
@ -71,42 +71,44 @@
|
|||||||
# CHECK: chi [[REG]], 107
|
# CHECK: chi [[REG]], 107
|
||||||
# CHECK: jgl [[LABEL]]
|
# CHECK: jgl [[LABEL]]
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
branch_blocks = 8
|
branch_blocks = 8
|
||||||
main_size = 0xffcc
|
main_size = 0xffcc
|
||||||
|
|
||||||
print '@global = global i32 0'
|
print('@global = global i32 0')
|
||||||
|
|
||||||
print 'define void @f1(i8 *%base, i8 *%stop) {'
|
print('define void @f1(i8 *%base, i8 *%stop) {')
|
||||||
print 'entry:'
|
print('entry:')
|
||||||
print ' br label %before0'
|
print(' br label %before0')
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
||||||
print 'before%d:' % i
|
print('before%d:' % i)
|
||||||
print ' %%bcur%d = load i8 , i8 *%%stop' % i
|
print(' %%bcur%d = load i8 , i8 *%%stop' % i)
|
||||||
print ' %%bext%d = sext i8 %%bcur%d to i32' % (i, i)
|
print(' %%bext%d = sext i8 %%bcur%d to i32' % (i, i))
|
||||||
print ' %%btest%d = icmp slt i32 %%bext%d, %d' % (i, i, i + 50)
|
print(' %%btest%d = icmp slt i32 %%bext%d, %d' % (i, i, i + 50))
|
||||||
print ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)
|
print(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next))
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
print '%s:' % next
|
print('%s:' % next)
|
||||||
a, b = 1, 1
|
a, b = 1, 1
|
||||||
for i in xrange(0, main_size, 6):
|
for i in xrange(0, main_size, 6):
|
||||||
a, b = b, a + b
|
a, b = b, a + b
|
||||||
offset = 4096 + b % 500000
|
offset = 4096 + b % 500000
|
||||||
value = a % 256
|
value = a % 256
|
||||||
print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)
|
print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset))
|
||||||
print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i)
|
print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i))
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
print ' %%acur%d = load i8 , i8 *%%stop' % i
|
print(' %%acur%d = load i8 , i8 *%%stop' % i)
|
||||||
print ' %%aext%d = sext i8 %%acur%d to i32' % (i, i)
|
print(' %%aext%d = sext i8 %%acur%d to i32' % (i, i))
|
||||||
print ' %%atest%d = icmp slt i32 %%aext%d, %d' % (i, i, i + 100)
|
print(' %%atest%d = icmp slt i32 %%aext%d, %d' % (i, i, i + 100))
|
||||||
print ' br i1 %%atest%d, label %%main, label %%after%d' % (i, i)
|
print(' br i1 %%atest%d, label %%main, label %%after%d' % (i, i))
|
||||||
print ''
|
print('')
|
||||||
print 'after%d:' % i
|
print('after%d:' % i)
|
||||||
|
|
||||||
print ' %dummy = load volatile i32, i32 *@global'
|
print(' %dummy = load volatile i32, i32 *@global')
|
||||||
print ' ret void'
|
print(' ret void')
|
||||||
print '}'
|
print('}')
|
||||||
|
@ -71,42 +71,44 @@
|
|||||||
# CHECK: cghi [[REG]], 107
|
# CHECK: cghi [[REG]], 107
|
||||||
# CHECK: jgl [[LABEL]]
|
# CHECK: jgl [[LABEL]]
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
branch_blocks = 8
|
branch_blocks = 8
|
||||||
main_size = 0xffcc
|
main_size = 0xffcc
|
||||||
|
|
||||||
print '@global = global i32 0'
|
print('@global = global i32 0')
|
||||||
|
|
||||||
print 'define void @f1(i8 *%base, i8 *%stop) {'
|
print('define void @f1(i8 *%base, i8 *%stop) {')
|
||||||
print 'entry:'
|
print('entry:')
|
||||||
print ' br label %before0'
|
print(' br label %before0')
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
||||||
print 'before%d:' % i
|
print('before%d:' % i)
|
||||||
print ' %%bcur%d = load i8 , i8 *%%stop' % i
|
print(' %%bcur%d = load i8 , i8 *%%stop' % i)
|
||||||
print ' %%bext%d = sext i8 %%bcur%d to i64' % (i, i)
|
print(' %%bext%d = sext i8 %%bcur%d to i64' % (i, i))
|
||||||
print ' %%btest%d = icmp slt i64 %%bext%d, %d' % (i, i, i + 50)
|
print(' %%btest%d = icmp slt i64 %%bext%d, %d' % (i, i, i + 50))
|
||||||
print ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)
|
print(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next))
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
print '%s:' % next
|
print('%s:' % next)
|
||||||
a, b = 1, 1
|
a, b = 1, 1
|
||||||
for i in xrange(0, main_size, 6):
|
for i in xrange(0, main_size, 6):
|
||||||
a, b = b, a + b
|
a, b = b, a + b
|
||||||
offset = 4096 + b % 500000
|
offset = 4096 + b % 500000
|
||||||
value = a % 256
|
value = a % 256
|
||||||
print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)
|
print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset))
|
||||||
print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i)
|
print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i))
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
print ' %%acur%d = load i8 , i8 *%%stop' % i
|
print(' %%acur%d = load i8 , i8 *%%stop' % i)
|
||||||
print ' %%aext%d = sext i8 %%acur%d to i64' % (i, i)
|
print(' %%aext%d = sext i8 %%acur%d to i64' % (i, i))
|
||||||
print ' %%atest%d = icmp slt i64 %%aext%d, %d' % (i, i, i + 100)
|
print(' %%atest%d = icmp slt i64 %%aext%d, %d' % (i, i, i + 100))
|
||||||
print ' br i1 %%atest%d, label %%main, label %%after%d' % (i, i)
|
print(' br i1 %%atest%d, label %%main, label %%after%d' % (i, i))
|
||||||
print ''
|
print('')
|
||||||
print 'after%d:' % i
|
print('after%d:' % i)
|
||||||
|
|
||||||
print ' %dummy = load volatile i32, i32 *@global'
|
print(' %dummy = load volatile i32, i32 *@global')
|
||||||
print ' ret void'
|
print(' ret void')
|
||||||
print '}'
|
print('}')
|
||||||
|
@ -32,37 +32,39 @@
|
|||||||
# CHECK: ahi {{%r[0-9]+}}, -1
|
# CHECK: ahi {{%r[0-9]+}}, -1
|
||||||
# CHECK: jglh
|
# CHECK: jglh
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
branch_blocks = 8
|
branch_blocks = 8
|
||||||
main_size = 0xffd8
|
main_size = 0xffd8
|
||||||
|
|
||||||
print 'define void @f1(i8 *%base, i32 *%counts) {'
|
print('define void @f1(i8 *%base, i32 *%counts) {')
|
||||||
print 'entry:'
|
print('entry:')
|
||||||
|
|
||||||
for i in xrange(branch_blocks - 1, -1, -1):
|
for i in xrange(branch_blocks - 1, -1, -1):
|
||||||
print ' %%countptr%d = getelementptr i32, i32 *%%counts, i64 %d' % (i, i)
|
print(' %%countptr%d = getelementptr i32, i32 *%%counts, i64 %d' % (i, i))
|
||||||
print ' %%initcount%d = load i32 , i32 *%%countptr%d' % (i, i)
|
print(' %%initcount%d = load i32 , i32 *%%countptr%d' % (i, i))
|
||||||
print ' br label %%loop%d' % i
|
print(' br label %%loop%d' % i)
|
||||||
|
|
||||||
print 'loop%d:' % i
|
print('loop%d:' % i)
|
||||||
block1 = 'entry' if i == branch_blocks - 1 else 'loop%d' % (i + 1)
|
block1 = 'entry' if i == branch_blocks - 1 else 'loop%d' % (i + 1)
|
||||||
block2 = 'loop0' if i == 0 else 'after%d' % (i - 1)
|
block2 = 'loop0' if i == 0 else 'after%d' % (i - 1)
|
||||||
print (' %%count%d = phi i32 [ %%initcount%d, %%%s ],'
|
print((' %%count%d = phi i32 [ %%initcount%d, %%%s ],'
|
||||||
' [ %%nextcount%d, %%%s ]' % (i, i, block1, i, block2))
|
' [ %%nextcount%d, %%%s ]' % (i, i, block1, i, block2)))
|
||||||
|
|
||||||
a, b = 1, 1
|
a, b = 1, 1
|
||||||
for i in xrange(0, main_size, 6):
|
for i in xrange(0, main_size, 6):
|
||||||
a, b = b, a + b
|
a, b = b, a + b
|
||||||
offset = 4096 + b % 500000
|
offset = 4096 + b % 500000
|
||||||
value = a % 256
|
value = a % 256
|
||||||
print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)
|
print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset))
|
||||||
print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i)
|
print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i))
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
print ' %%nextcount%d = add i32 %%count%d, -1' % (i, i)
|
print(' %%nextcount%d = add i32 %%count%d, -1' % (i, i))
|
||||||
print ' %%test%d = icmp ne i32 %%nextcount%d, 0' % (i, i)
|
print(' %%test%d = icmp ne i32 %%nextcount%d, 0' % (i, i))
|
||||||
print ' br i1 %%test%d, label %%loop%d, label %%after%d' % (i, i, i)
|
print(' br i1 %%test%d, label %%loop%d, label %%after%d' % (i, i, i))
|
||||||
print ''
|
print('')
|
||||||
print 'after%d:' % i
|
print('after%d:' % i)
|
||||||
|
|
||||||
print ' ret void'
|
print(' ret void')
|
||||||
print '}'
|
print('}')
|
||||||
|
@ -33,37 +33,39 @@
|
|||||||
# CHECK: aghi {{%r[0-9]+}}, -1
|
# CHECK: aghi {{%r[0-9]+}}, -1
|
||||||
# CHECK: jglh
|
# CHECK: jglh
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
branch_blocks = 8
|
branch_blocks = 8
|
||||||
main_size = 0xffd8
|
main_size = 0xffd8
|
||||||
|
|
||||||
print 'define void @f1(i8 *%base, i64 *%counts) {'
|
print('define void @f1(i8 *%base, i64 *%counts) {')
|
||||||
print 'entry:'
|
print('entry:')
|
||||||
|
|
||||||
for i in xrange(branch_blocks - 1, -1, -1):
|
for i in xrange(branch_blocks - 1, -1, -1):
|
||||||
print ' %%countptr%d = getelementptr i64, i64 *%%counts, i64 %d' % (i, i)
|
print(' %%countptr%d = getelementptr i64, i64 *%%counts, i64 %d' % (i, i))
|
||||||
print ' %%initcount%d = load i64 , i64 *%%countptr%d' % (i, i)
|
print(' %%initcount%d = load i64 , i64 *%%countptr%d' % (i, i))
|
||||||
print ' br label %%loop%d' % i
|
print(' br label %%loop%d' % i)
|
||||||
|
|
||||||
print 'loop%d:' % i
|
print('loop%d:' % i)
|
||||||
block1 = 'entry' if i == branch_blocks - 1 else 'loop%d' % (i + 1)
|
block1 = 'entry' if i == branch_blocks - 1 else 'loop%d' % (i + 1)
|
||||||
block2 = 'loop0' if i == 0 else 'after%d' % (i - 1)
|
block2 = 'loop0' if i == 0 else 'after%d' % (i - 1)
|
||||||
print (' %%count%d = phi i64 [ %%initcount%d, %%%s ],'
|
print((' %%count%d = phi i64 [ %%initcount%d, %%%s ],'
|
||||||
' [ %%nextcount%d, %%%s ]' % (i, i, block1, i, block2))
|
' [ %%nextcount%d, %%%s ]' % (i, i, block1, i, block2)))
|
||||||
|
|
||||||
a, b = 1, 1
|
a, b = 1, 1
|
||||||
for i in xrange(0, main_size, 6):
|
for i in xrange(0, main_size, 6):
|
||||||
a, b = b, a + b
|
a, b = b, a + b
|
||||||
offset = 4096 + b % 500000
|
offset = 4096 + b % 500000
|
||||||
value = a % 256
|
value = a % 256
|
||||||
print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)
|
print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset))
|
||||||
print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i)
|
print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i))
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
print ' %%nextcount%d = add i64 %%count%d, -1' % (i, i)
|
print(' %%nextcount%d = add i64 %%count%d, -1' % (i, i))
|
||||||
print ' %%test%d = icmp ne i64 %%nextcount%d, 0' % (i, i)
|
print(' %%test%d = icmp ne i64 %%nextcount%d, 0' % (i, i))
|
||||||
print ' br i1 %%test%d, label %%loop%d, label %%after%d' % (i, i, i)
|
print(' br i1 %%test%d, label %%loop%d, label %%after%d' % (i, i, i))
|
||||||
print ''
|
print('')
|
||||||
print 'after%d:' % i
|
print('after%d:' % i)
|
||||||
|
|
||||||
print ' ret void'
|
print(' ret void')
|
||||||
print '}'
|
print('}')
|
||||||
|
@ -67,44 +67,46 @@
|
|||||||
# CHECK: clr %r4, [[REG]]
|
# CHECK: clr %r4, [[REG]]
|
||||||
# CHECK: jgl [[LABEL]]
|
# CHECK: jgl [[LABEL]]
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
branch_blocks = 8
|
branch_blocks = 8
|
||||||
main_size = 0xffcc
|
main_size = 0xffcc
|
||||||
|
|
||||||
print '@global = global i32 0'
|
print('@global = global i32 0')
|
||||||
|
|
||||||
print 'define void @f1(i8 *%base, i8 *%stop, i32 %limit) {'
|
print('define void @f1(i8 *%base, i8 *%stop, i32 %limit) {')
|
||||||
print 'entry:'
|
print('entry:')
|
||||||
print ' br label %before0'
|
print(' br label %before0')
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
||||||
print 'before%d:' % i
|
print('before%d:' % i)
|
||||||
print ' %%bstop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i)
|
print(' %%bstop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i))
|
||||||
print ' %%bcur%d = load i8 , i8 *%%bstop%d' % (i, i)
|
print(' %%bcur%d = load i8 , i8 *%%bstop%d' % (i, i))
|
||||||
print ' %%bext%d = sext i8 %%bcur%d to i32' % (i, i)
|
print(' %%bext%d = sext i8 %%bcur%d to i32' % (i, i))
|
||||||
print ' %%btest%d = icmp ult i32 %%limit, %%bext%d' % (i, i)
|
print(' %%btest%d = icmp ult i32 %%limit, %%bext%d' % (i, i))
|
||||||
print ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)
|
print(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next))
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
print '%s:' % next
|
print('%s:' % next)
|
||||||
a, b = 1, 1
|
a, b = 1, 1
|
||||||
for i in xrange(0, main_size, 6):
|
for i in xrange(0, main_size, 6):
|
||||||
a, b = b, a + b
|
a, b = b, a + b
|
||||||
offset = 4096 + b % 500000
|
offset = 4096 + b % 500000
|
||||||
value = a % 256
|
value = a % 256
|
||||||
print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)
|
print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset))
|
||||||
print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i)
|
print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i))
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
print ' %%astop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i + 25)
|
print(' %%astop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i + 25))
|
||||||
print ' %%acur%d = load i8 , i8 *%%astop%d' % (i, i)
|
print(' %%acur%d = load i8 , i8 *%%astop%d' % (i, i))
|
||||||
print ' %%aext%d = sext i8 %%acur%d to i32' % (i, i)
|
print(' %%aext%d = sext i8 %%acur%d to i32' % (i, i))
|
||||||
print ' %%atest%d = icmp ult i32 %%limit, %%aext%d' % (i, i)
|
print(' %%atest%d = icmp ult i32 %%limit, %%aext%d' % (i, i))
|
||||||
print ' br i1 %%atest%d, label %%main, label %%after%d' % (i, i)
|
print(' br i1 %%atest%d, label %%main, label %%after%d' % (i, i))
|
||||||
print ''
|
print('')
|
||||||
print 'after%d:' % i
|
print('after%d:' % i)
|
||||||
|
|
||||||
print ' %dummy = load volatile i32, i32 *@global'
|
print(' %dummy = load volatile i32, i32 *@global')
|
||||||
print ' ret void'
|
print(' ret void')
|
||||||
print '}'
|
print('}')
|
||||||
|
@ -71,44 +71,46 @@
|
|||||||
# CHECK: clgr %r4, [[REG]]
|
# CHECK: clgr %r4, [[REG]]
|
||||||
# CHECK: jgl [[LABEL]]
|
# CHECK: jgl [[LABEL]]
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
branch_blocks = 8
|
branch_blocks = 8
|
||||||
main_size = 0xffcc
|
main_size = 0xffcc
|
||||||
|
|
||||||
print '@global = global i32 0'
|
print('@global = global i32 0')
|
||||||
|
|
||||||
print 'define void @f1(i8 *%base, i8 *%stop, i64 %limit) {'
|
print('define void @f1(i8 *%base, i8 *%stop, i64 %limit) {')
|
||||||
print 'entry:'
|
print('entry:')
|
||||||
print ' br label %before0'
|
print(' br label %before0')
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
||||||
print 'before%d:' % i
|
print('before%d:' % i)
|
||||||
print ' %%bstop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i)
|
print(' %%bstop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i))
|
||||||
print ' %%bcur%d = load i8 , i8 *%%bstop%d' % (i, i)
|
print(' %%bcur%d = load i8 , i8 *%%bstop%d' % (i, i))
|
||||||
print ' %%bext%d = sext i8 %%bcur%d to i64' % (i, i)
|
print(' %%bext%d = sext i8 %%bcur%d to i64' % (i, i))
|
||||||
print ' %%btest%d = icmp ult i64 %%limit, %%bext%d' % (i, i)
|
print(' %%btest%d = icmp ult i64 %%limit, %%bext%d' % (i, i))
|
||||||
print ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)
|
print(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next))
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
print '%s:' % next
|
print('%s:' % next)
|
||||||
a, b = 1, 1
|
a, b = 1, 1
|
||||||
for i in xrange(0, main_size, 6):
|
for i in xrange(0, main_size, 6):
|
||||||
a, b = b, a + b
|
a, b = b, a + b
|
||||||
offset = 4096 + b % 500000
|
offset = 4096 + b % 500000
|
||||||
value = a % 256
|
value = a % 256
|
||||||
print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)
|
print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset))
|
||||||
print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i)
|
print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i))
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
print ' %%astop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i + 25)
|
print(' %%astop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i + 25))
|
||||||
print ' %%acur%d = load i8 , i8 *%%astop%d' % (i, i)
|
print(' %%acur%d = load i8 , i8 *%%astop%d' % (i, i))
|
||||||
print ' %%aext%d = sext i8 %%acur%d to i64' % (i, i)
|
print(' %%aext%d = sext i8 %%acur%d to i64' % (i, i))
|
||||||
print ' %%atest%d = icmp ult i64 %%limit, %%aext%d' % (i, i)
|
print(' %%atest%d = icmp ult i64 %%limit, %%aext%d' % (i, i))
|
||||||
print ' br i1 %%atest%d, label %%main, label %%after%d' % (i, i)
|
print(' br i1 %%atest%d, label %%main, label %%after%d' % (i, i))
|
||||||
print ''
|
print('')
|
||||||
print 'after%d:' % i
|
print('after%d:' % i)
|
||||||
|
|
||||||
print ' %dummy = load volatile i32, i32 *@global'
|
print(' %dummy = load volatile i32, i32 *@global')
|
||||||
print ' ret void'
|
print(' ret void')
|
||||||
print '}'
|
print('}')
|
||||||
|
@ -87,44 +87,46 @@
|
|||||||
# CHECK: clfi [[REG]], 107
|
# CHECK: clfi [[REG]], 107
|
||||||
# CHECK: jgl [[LABEL]]
|
# CHECK: jgl [[LABEL]]
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
branch_blocks = 8
|
branch_blocks = 8
|
||||||
main_size = 0xffc6
|
main_size = 0xffc6
|
||||||
|
|
||||||
print '@global = global i32 0'
|
print('@global = global i32 0')
|
||||||
|
|
||||||
print 'define void @f1(i8 *%base, i32 *%stopa, i32 *%stopb) {'
|
print('define void @f1(i8 *%base, i32 *%stopa, i32 *%stopb) {')
|
||||||
print 'entry:'
|
print('entry:')
|
||||||
print ' br label %before0'
|
print(' br label %before0')
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
||||||
print 'before%d:' % i
|
print('before%d:' % i)
|
||||||
print ' %%bcur%da = load i32 , i32 *%%stopa' % i
|
print(' %%bcur%da = load i32 , i32 *%%stopa' % i)
|
||||||
print ' %%bcur%db = load i32 , i32 *%%stopb' % i
|
print(' %%bcur%db = load i32 , i32 *%%stopb' % i)
|
||||||
print ' %%bsub%d = sub i32 %%bcur%da, %%bcur%db' % (i, i, i)
|
print(' %%bsub%d = sub i32 %%bcur%da, %%bcur%db' % (i, i, i))
|
||||||
print ' %%btest%d = icmp ult i32 %%bsub%d, %d' % (i, i, i + 50)
|
print(' %%btest%d = icmp ult i32 %%bsub%d, %d' % (i, i, i + 50))
|
||||||
print ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)
|
print(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next))
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
print '%s:' % next
|
print('%s:' % next)
|
||||||
a, b = 1, 1
|
a, b = 1, 1
|
||||||
for i in xrange(0, main_size, 6):
|
for i in xrange(0, main_size, 6):
|
||||||
a, b = b, a + b
|
a, b = b, a + b
|
||||||
offset = 4096 + b % 500000
|
offset = 4096 + b % 500000
|
||||||
value = a % 256
|
value = a % 256
|
||||||
print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)
|
print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset))
|
||||||
print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i)
|
print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i))
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
print ' %%acur%da = load i32 , i32 *%%stopa' % i
|
print(' %%acur%da = load i32 , i32 *%%stopa' % i)
|
||||||
print ' %%acur%db = load i32 , i32 *%%stopb' % i
|
print(' %%acur%db = load i32 , i32 *%%stopb' % i)
|
||||||
print ' %%asub%d = sub i32 %%acur%da, %%acur%db' % (i, i, i)
|
print(' %%asub%d = sub i32 %%acur%da, %%acur%db' % (i, i, i))
|
||||||
print ' %%atest%d = icmp ult i32 %%asub%d, %d' % (i, i, i + 100)
|
print(' %%atest%d = icmp ult i32 %%asub%d, %d' % (i, i, i + 100))
|
||||||
print ' br i1 %%atest%d, label %%main, label %%after%d' % (i, i)
|
print(' br i1 %%atest%d, label %%main, label %%after%d' % (i, i))
|
||||||
print ''
|
print('')
|
||||||
print 'after%d:' % i
|
print('after%d:' % i)
|
||||||
|
|
||||||
print ' %dummy = load volatile i32, i32 *@global'
|
print(' %dummy = load volatile i32, i32 *@global')
|
||||||
print ' ret void'
|
print(' ret void')
|
||||||
print '}'
|
print('}')
|
||||||
|
@ -87,44 +87,46 @@
|
|||||||
# CHECK: clgfi [[REG]], 107
|
# CHECK: clgfi [[REG]], 107
|
||||||
# CHECK: jgl [[LABEL]]
|
# CHECK: jgl [[LABEL]]
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
branch_blocks = 8
|
branch_blocks = 8
|
||||||
main_size = 0xffb4
|
main_size = 0xffb4
|
||||||
|
|
||||||
print '@global = global i32 0'
|
print('@global = global i32 0')
|
||||||
|
|
||||||
print 'define void @f1(i8 *%base, i64 *%stopa, i64 *%stopb) {'
|
print('define void @f1(i8 *%base, i64 *%stopa, i64 *%stopb) {')
|
||||||
print 'entry:'
|
print('entry:')
|
||||||
print ' br label %before0'
|
print(' br label %before0')
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main'
|
||||||
print 'before%d:' % i
|
print('before%d:' % i)
|
||||||
print ' %%bcur%da = load i64 , i64 *%%stopa' % i
|
print(' %%bcur%da = load i64 , i64 *%%stopa' % i)
|
||||||
print ' %%bcur%db = load i64 , i64 *%%stopb' % i
|
print(' %%bcur%db = load i64 , i64 *%%stopb' % i)
|
||||||
print ' %%bsub%d = sub i64 %%bcur%da, %%bcur%db' % (i, i, i)
|
print(' %%bsub%d = sub i64 %%bcur%da, %%bcur%db' % (i, i, i))
|
||||||
print ' %%btest%d = icmp ult i64 %%bsub%d, %d' % (i, i, i + 50)
|
print(' %%btest%d = icmp ult i64 %%bsub%d, %d' % (i, i, i + 50))
|
||||||
print ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)
|
print(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next))
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
print '%s:' % next
|
print('%s:' % next)
|
||||||
a, b = 1, 1
|
a, b = 1, 1
|
||||||
for i in xrange(0, main_size, 6):
|
for i in xrange(0, main_size, 6):
|
||||||
a, b = b, a + b
|
a, b = b, a + b
|
||||||
offset = 4096 + b % 500000
|
offset = 4096 + b % 500000
|
||||||
value = a % 256
|
value = a % 256
|
||||||
print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)
|
print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset))
|
||||||
print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i)
|
print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i))
|
||||||
|
|
||||||
for i in xrange(branch_blocks):
|
for i in xrange(branch_blocks):
|
||||||
print ' %%acur%da = load i64 , i64 *%%stopa' % i
|
print(' %%acur%da = load i64 , i64 *%%stopa' % i)
|
||||||
print ' %%acur%db = load i64 , i64 *%%stopb' % i
|
print(' %%acur%db = load i64 , i64 *%%stopb' % i)
|
||||||
print ' %%asub%d = sub i64 %%acur%da, %%acur%db' % (i, i, i)
|
print(' %%asub%d = sub i64 %%acur%da, %%acur%db' % (i, i, i))
|
||||||
print ' %%atest%d = icmp ult i64 %%asub%d, %d' % (i, i, i + 100)
|
print(' %%atest%d = icmp ult i64 %%asub%d, %d' % (i, i, i + 100))
|
||||||
print ' br i1 %%atest%d, label %%main, label %%after%d' % (i, i)
|
print(' br i1 %%atest%d, label %%main, label %%after%d' % (i, i))
|
||||||
print ''
|
print('')
|
||||||
print 'after%d:' % i
|
print('after%d:' % i)
|
||||||
|
|
||||||
print ' %dummy = load volatile i32, i32 *@global'
|
print(' %dummy = load volatile i32, i32 *@global')
|
||||||
print ' ret void'
|
print(' ret void')
|
||||||
print '}'
|
print('}')
|
||||||
|
@ -18,23 +18,26 @@
|
|||||||
# CHECK: lay [[REG:%r[0-5]]], 4096(%r15)
|
# CHECK: lay [[REG:%r[0-5]]], 4096(%r15)
|
||||||
# CHECK: mvc {{[0-9]+}}(8,{{%r[0-9]+}}), 8([[REG]])
|
# CHECK: mvc {{[0-9]+}}(8,{{%r[0-9]+}}), 8([[REG]])
|
||||||
# CHECK: br %r14
|
# CHECK: br %r14
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
count = 500
|
count = 500
|
||||||
|
|
||||||
print 'declare void @foo()'
|
print('declare void @foo()')
|
||||||
print ''
|
print('')
|
||||||
print 'define void @f1(i64 *%base0, i64 *%base1) {'
|
print('define void @f1(i64 *%base0, i64 *%base1) {')
|
||||||
|
|
||||||
for i in range(count):
|
for i in range(count):
|
||||||
print ' %%ptr%d = getelementptr i64, i64 *%%base%d, i64 %d' % (i, i % 2, i / 2)
|
print(' %%ptr%d = getelementptr i64, i64 *%%base%d, i64 %d' % (i, i % 2, i / 2))
|
||||||
print ' %%val%d = load i64 , i64 *%%ptr%d' % (i, i)
|
print(' %%val%d = load i64 , i64 *%%ptr%d' % (i, i))
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
print ' call void @foo()'
|
print(' call void @foo()')
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
for i in range(count):
|
for i in range(count):
|
||||||
print ' store i64 %%val%d, i64 *%%ptr%d' % (i, i)
|
print(' store i64 %%val%d, i64 *%%ptr%d' % (i, i))
|
||||||
|
|
||||||
print ''
|
print('')
|
||||||
print ' ret void'
|
print(' ret void')
|
||||||
print '}'
|
print('}')
|
||||||
|
@ -19,55 +19,58 @@
|
|||||||
# the first 8168 bytes to be used for the call. 160 of these bytes are
|
# the first 8168 bytes to be used for the call. 160 of these bytes are
|
||||||
# allocated for the ABI frame. There are also 5 argument registers, one of
|
# allocated for the ABI frame. There are also 5 argument registers, one of
|
||||||
# which is used as a base pointer.
|
# which is used as a base pointer.
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
args = (8168 - 160) / 8 + (5 - 1)
|
args = (8168 - 160) / 8 + (5 - 1)
|
||||||
|
|
||||||
print 'declare i64 *@foo(i64 *%s)' % (', i64' * args)
|
print('declare i64 *@foo(i64 *%s)' % (', i64' * args))
|
||||||
print 'declare void @bar(i64 *)'
|
print('declare void @bar(i64 *)')
|
||||||
print ''
|
print('')
|
||||||
print 'define i64 @f1(i64 %foo) {'
|
print('define i64 @f1(i64 %foo) {')
|
||||||
print 'entry:'
|
print('entry:')
|
||||||
|
|
||||||
# Make the allocation big, so that it goes at the top of the frame.
|
# Make the allocation big, so that it goes at the top of the frame.
|
||||||
print ' %array = alloca [1000 x i64]'
|
print(' %array = alloca [1000 x i64]')
|
||||||
print ' %area = getelementptr [1000 x i64], [1000 x i64] *%array, i64 0, i64 0'
|
print(' %area = getelementptr [1000 x i64], [1000 x i64] *%array, i64 0, i64 0')
|
||||||
print ' %%base = call i64 *@foo(i64 *%%area%s)' % (', i64 0' * args)
|
print(' %%base = call i64 *@foo(i64 *%%area%s)' % (', i64 0' * args))
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
# Make sure all GPRs are used. One is needed for the stack pointer and
|
# Make sure all GPRs are used. One is needed for the stack pointer and
|
||||||
# another for %base, so we need 14 live values.
|
# another for %base, so we need 14 live values.
|
||||||
count = 14
|
count = 14
|
||||||
for i in range(count):
|
for i in range(count):
|
||||||
print ' %%ptr%d = getelementptr i64, i64 *%%base, i64 %d' % (i, i / 2)
|
print(' %%ptr%d = getelementptr i64, i64 *%%base, i64 %d' % (i, i / 2))
|
||||||
print ' %%val%d = load volatile i64 , i64 *%%ptr%d' % (i, i)
|
print(' %%val%d = load volatile i64 , i64 *%%ptr%d' % (i, i))
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
# Encourage the register allocator to give preference to these %vals
|
# Encourage the register allocator to give preference to these %vals
|
||||||
# by using them several times.
|
# by using them several times.
|
||||||
for j in range(4):
|
for j in range(4):
|
||||||
for i in range(count):
|
for i in range(count):
|
||||||
print ' store volatile i64 %%val%d, i64 *%%ptr%d' % (i, i)
|
print(' store volatile i64 %%val%d, i64 *%%ptr%d' % (i, i))
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
# Copy the incoming argument, which we expect to be spilled, to the frame
|
# Copy the incoming argument, which we expect to be spilled, to the frame
|
||||||
# index for the alloca area. Also throw in a volatile store, so that this
|
# index for the alloca area. Also throw in a volatile store, so that this
|
||||||
# block cannot be reordered with the surrounding code.
|
# block cannot be reordered with the surrounding code.
|
||||||
print ' %cond = icmp eq i64 %val0, %val1'
|
print(' %cond = icmp eq i64 %val0, %val1')
|
||||||
print ' br i1 %cond, label %skip, label %fallthru'
|
print(' br i1 %cond, label %skip, label %fallthru')
|
||||||
print ''
|
print('')
|
||||||
print 'fallthru:'
|
print('fallthru:')
|
||||||
print ' store i64 %foo, i64 *%area'
|
print(' store i64 %foo, i64 *%area')
|
||||||
print ' store volatile i64 %val0, i64 *%ptr0'
|
print(' store volatile i64 %val0, i64 *%ptr0')
|
||||||
print ' br label %skip'
|
print(' br label %skip')
|
||||||
print ''
|
print('')
|
||||||
print 'skip:'
|
print('skip:')
|
||||||
|
|
||||||
# Use each %val a few more times to emphasise the point, and to make sure
|
# Use each %val a few more times to emphasise the point, and to make sure
|
||||||
# that they are live across the store of %foo.
|
# that they are live across the store of %foo.
|
||||||
for j in range(4):
|
for j in range(4):
|
||||||
for i in range(count):
|
for i in range(count):
|
||||||
print ' store volatile i64 %%val%d, i64 *%%ptr%d' % (i, i)
|
print(' store volatile i64 %%val%d, i64 *%%ptr%d' % (i, i))
|
||||||
print ''
|
print('')
|
||||||
|
|
||||||
print ' call void @bar(i64 *%area)'
|
print(' call void @bar(i64 *%area)')
|
||||||
print ' ret i64 0'
|
print(' ret i64 0')
|
||||||
print '}'
|
print('}')
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
# RUN: python %s | llvm-mc -filetype=obj -triple i686-pc-win32 - | llvm-readobj -h | FileCheck %s
|
# RUN: python %s | llvm-mc -filetype=obj -triple i686-pc-win32 - | llvm-readobj -h | FileCheck %s
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
# This test checks that the COFF object emitter can produce objects with
|
# This test checks that the COFF object emitter can produce objects with
|
||||||
# more than 65279 sections.
|
# more than 65279 sections.
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import argparse
|
import argparse
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
# Generates ELF, COFF and MachO object files for different architectures
|
# Generates ELF, COFF and MachO object files for different architectures
|
||||||
# containing all relocations:
|
# containing all relocations:
|
||||||
#
|
#
|
||||||
|
@ -22,6 +22,8 @@ Other options:
|
|||||||
--host host_name - host name to bind server to (127.0.0.1)
|
--host host_name - host name to bind server to (127.0.0.1)
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import http.server
|
import http.server
|
||||||
import json
|
import json
|
||||||
|
@ -8,10 +8,13 @@
|
|||||||
#the comments
|
#the comments
|
||||||
#10/12/2005: now it only removes nodes and edges for which the label is %tmp.# rather
|
#10/12/2005: now it only removes nodes and edges for which the label is %tmp.# rather
|
||||||
#than removing all lines for which the lable CONTAINS %tmp.#
|
#than removing all lines for which the lable CONTAINS %tmp.#
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
if( len(sys.argv) < 3 ):
|
if( len(sys.argv) < 3 ):
|
||||||
print 'usage is: ./DSAclean <dot_file_to_be_cleaned> <out_put_file>'
|
print('usage is: ./DSAclean <dot_file_to_be_cleaned> <out_put_file>')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
#get a file object
|
#get a file object
|
||||||
input = open(sys.argv[1], 'r')
|
input = open(sys.argv[1], 'r')
|
||||||
|
@ -25,14 +25,16 @@
|
|||||||
#currently the script prints the names it is searching for
|
#currently the script prints the names it is searching for
|
||||||
#to STDOUT, so you can check to see if they are what you intend
|
#to STDOUT, so you can check to see if they are what you intend
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import string
|
import string
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
if len(sys.argv) < 3:
|
if len(sys.argv) < 3:
|
||||||
print 'usage is ./DSAextract <dot_file_to_modify> \
|
print('usage is ./DSAextract <dot_file_to_modify> \
|
||||||
<output_file> [list of nodes to extract]'
|
<output_file> [list of nodes to extract]')
|
||||||
|
|
||||||
#open the input file
|
#open the input file
|
||||||
input = open(sys.argv[1], 'r')
|
input = open(sys.argv[1], 'r')
|
||||||
@ -73,7 +75,7 @@ while buffer != '':
|
|||||||
#test code
|
#test code
|
||||||
#print '\n'
|
#print '\n'
|
||||||
|
|
||||||
print node_name_set
|
print(node_name_set)
|
||||||
|
|
||||||
#print node_set
|
#print node_set
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import email.mime.multipart
|
import email.mime.multipart
|
||||||
import email.mime.text
|
import email.mime.text
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
def analyze_match_table(path):
|
def analyze_match_table(path):
|
||||||
# Extract the instruction table.
|
# Extract the instruction table.
|
||||||
data = open(path).read()
|
data = open(path).read()
|
||||||
@ -37,10 +39,10 @@ def analyze_match_table(path):
|
|||||||
condcode_mnemonics = set(m for m in mnemonics
|
condcode_mnemonics = set(m for m in mnemonics
|
||||||
if 'MCK_CondCode' in mnemonic_flags[m])
|
if 'MCK_CondCode' in mnemonic_flags[m])
|
||||||
noncondcode_mnemonics = mnemonics - condcode_mnemonics
|
noncondcode_mnemonics = mnemonics - condcode_mnemonics
|
||||||
print ' || '.join('Mnemonic == "%s"' % m
|
print(' || '.join('Mnemonic == "%s"' % m
|
||||||
for m in ccout_mnemonics)
|
for m in ccout_mnemonics))
|
||||||
print ' || '.join('Mnemonic == "%s"' % m
|
print(' || '.join('Mnemonic == "%s"' % m
|
||||||
for m in noncondcode_mnemonics)
|
for m in noncondcode_mnemonics))
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
import sys
|
import sys
|
||||||
|
@ -10,6 +10,8 @@ One good use of this program is to test whether your linear time algorithm is
|
|||||||
really behaving linearly.
|
really behaving linearly.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser(description=__doc__)
|
parser = argparse.ArgumentParser(description=__doc__)
|
||||||
@ -17,27 +19,27 @@ def main():
|
|||||||
help="Number of ladder rungs. Must be a multiple of 2")
|
help="Number of ladder rungs. Must be a multiple of 2")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
if (args.rungs % 2) != 0:
|
if (args.rungs % 2) != 0:
|
||||||
print "Rungs must be a multiple of 2"
|
print("Rungs must be a multiple of 2")
|
||||||
return
|
return
|
||||||
print "int ladder(int *foo, int *bar, int x) {"
|
print("int ladder(int *foo, int *bar, int x) {")
|
||||||
rung1 = xrange(0, args.rungs, 2)
|
rung1 = xrange(0, args.rungs, 2)
|
||||||
rung2 = xrange(1, args.rungs, 2)
|
rung2 = xrange(1, args.rungs, 2)
|
||||||
for i in rung1:
|
for i in rung1:
|
||||||
print "rung1%d:" % i
|
print("rung1%d:" % i)
|
||||||
print "*foo = x++;"
|
print("*foo = x++;")
|
||||||
if i != rung1[-1]:
|
if i != rung1[-1]:
|
||||||
print "if (*bar) goto rung1%d;" % (i+2)
|
print("if (*bar) goto rung1%d;" % (i+2))
|
||||||
print "else goto rung2%d;" % (i+1)
|
print("else goto rung2%d;" % (i+1))
|
||||||
else:
|
else:
|
||||||
print "goto rung2%d;" % (i+1)
|
print("goto rung2%d;" % (i+1))
|
||||||
for i in rung2:
|
for i in rung2:
|
||||||
print "rung2%d:" % i
|
print("rung2%d:" % i)
|
||||||
print "*foo = x++;"
|
print("*foo = x++;")
|
||||||
if i != rung2[-1]:
|
if i != rung2[-1]:
|
||||||
print "goto rung2%d;" % (i+2)
|
print("goto rung2%d;" % (i+2))
|
||||||
else:
|
else:
|
||||||
print "return *foo;"
|
print("return *foo;")
|
||||||
print "}"
|
print("}")
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
# demanglings. Useful for stress testing the demangler against a large corpus
|
# demanglings. Useful for stress testing the demangler against a large corpus
|
||||||
# of inputs.
|
# of inputs.
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import functools
|
import functools
|
||||||
import os
|
import os
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
# and saves them in individual dot files (one for each plan). Optionally, and
|
# and saves them in individual dot files (one for each plan). Optionally, and
|
||||||
# providing 'dot' is installed, it can also render the dot into a PNG file.
|
# providing 'dot' is installed, it can also render the dot into a PNG file.
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import re
|
import re
|
||||||
import argparse
|
import argparse
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import gdb.printing
|
import gdb.printing
|
||||||
|
|
||||||
class Iterator:
|
class Iterator:
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
dump format.
|
dump format.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import re
|
import re
|
||||||
@ -32,8 +34,8 @@ def look_for_indirect(file):
|
|||||||
result = re.search('(call|jmp).*\*', line)
|
result = re.search('(call|jmp).*\*', line)
|
||||||
if result != None:
|
if result != None:
|
||||||
# TODO: Perhaps use cxxfilt to demangle functions?
|
# TODO: Perhaps use cxxfilt to demangle functions?
|
||||||
print function
|
print(function)
|
||||||
print line
|
print(line)
|
||||||
return
|
return
|
||||||
|
|
||||||
def main(args):
|
def main(args):
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Common lint functions applicable to multiple types of files.
|
# Common lint functions applicable to multiple types of files.
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
import re
|
import re
|
||||||
|
|
||||||
def VerifyLineLength(filename, lines, max_length):
|
def VerifyLineLength(filename, lines, max_length):
|
||||||
@ -89,7 +90,7 @@ def RunLintOverAllFiles(linter, filenames):
|
|||||||
for filename in filenames:
|
for filename in filenames:
|
||||||
file = open(filename, 'r')
|
file = open(filename, 'r')
|
||||||
if not file:
|
if not file:
|
||||||
print 'Cound not open %s' % filename
|
print('Cound not open %s' % filename)
|
||||||
continue
|
continue
|
||||||
lines = file.readlines()
|
lines = file.readlines()
|
||||||
lint.extend(linter.RunOnFile(filename, lines))
|
lint.extend(linter.RunOnFile(filename, lines))
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
# TODO: add unittests for the verifier functions:
|
# TODO: add unittests for the verifier functions:
|
||||||
# http://docs.python.org/library/unittest.html .
|
# http://docs.python.org/library/unittest.html .
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
import common_lint
|
import common_lint
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
@ -86,7 +87,7 @@ class CppLint(common_lint.BaseLint):
|
|||||||
def CppLintMain(filenames):
|
def CppLintMain(filenames):
|
||||||
all_lint = common_lint.RunLintOverAllFiles(CppLint(), filenames)
|
all_lint = common_lint.RunLintOverAllFiles(CppLint(), filenames)
|
||||||
for lint in all_lint:
|
for lint in all_lint:
|
||||||
print '%s:%d:%s' % (lint[0], lint[1], lint[2])
|
print('%s:%d:%s' % (lint[0], lint[1], lint[2]))
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import errno
|
import errno
|
||||||
import itertools
|
import itertools
|
||||||
import math
|
import math
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from __future__ import print_statement
|
||||||
import os
|
import os
|
||||||
|
|
||||||
sorted_environment = sorted(os.environ.items())
|
sorted_environment = sorted(os.environ.items())
|
||||||
|
|
||||||
for name,value in sorted_environment:
|
for name,value in sorted_environment:
|
||||||
print name,'=',value
|
print(name,'=',value)
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
Descriptor objects for entities that are part of the LLVM project.
|
Descriptor objects for entities that are part of the LLVM project.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import, print_function
|
||||||
try:
|
try:
|
||||||
import configparser
|
import configparser
|
||||||
except:
|
except:
|
||||||
@ -461,8 +461,8 @@ def _read_components_from_parser(parser, path, subpath):
|
|||||||
info = type_class.parse(subpath,
|
info = type_class.parse(subpath,
|
||||||
IniFormatParser(parser.items(section)))
|
IniFormatParser(parser.items(section)))
|
||||||
except TypeError:
|
except TypeError:
|
||||||
print >>sys.stderr, "error: invalid component %r in %r: %s" % (
|
print("error: invalid component %r in %r: %s" % (
|
||||||
section, path, "unable to instantiate: %r" % type_name)
|
section, path, "unable to instantiate: %r" % type_name), file=sys.stderr)
|
||||||
import traceback
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
raise SystemExit(1)
|
raise SystemExit(1)
|
||||||
|
@ -5,6 +5,7 @@ Summarize the information in the given coverage files.
|
|||||||
Emits the number of rules covered or the percentage of rules covered depending
|
Emits the number of rules covered or the percentage of rules covered depending
|
||||||
on whether --num-rules has been used to specify the total number of rules.
|
on whether --num-rules has been used to specify the total number of rules.
|
||||||
"""
|
"""
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import struct
|
import struct
|
||||||
@ -59,9 +60,9 @@ def main():
|
|||||||
num_rules = dict(args.num_rules)
|
num_rules = dict(args.num_rules)
|
||||||
for backend, rules_for_backend in covered_rules.items():
|
for backend, rules_for_backend in covered_rules.items():
|
||||||
if backend in num_rules:
|
if backend in num_rules:
|
||||||
print "%s: %3.2f%% of rules covered" % (backend, (float(len(rules_for_backend.keys())) / num_rules[backend]) * 100)
|
print("%s: %3.2f%% of rules covered" % (backend, float(len(rules_for_backend)) / num_rules[backend]) * 100))
|
||||||
else:
|
else:
|
||||||
print "%s: %d rules covered" % (backend, len(rules_for_backend.keys()))
|
print("%s: %d rules covered" % (backend, len(rules_for_backend)))
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import re, string, sys, os, time
|
import re, string, sys, os, time
|
||||||
|
|
||||||
DEBUG = 0
|
DEBUG = 0
|
||||||
@ -22,12 +24,12 @@ def parse(file):
|
|||||||
fname = ''
|
fname = ''
|
||||||
for t in r:
|
for t in r:
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print t
|
print(t)
|
||||||
if t[0] == 'PASS' or t[0] == 'FAIL' :
|
if t[0] == 'PASS' or t[0] == 'FAIL' :
|
||||||
tmp = t[2].split(testDirName)
|
tmp = t[2].split(testDirName)
|
||||||
|
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print tmp
|
print(tmp)
|
||||||
|
|
||||||
if len(tmp) == 2:
|
if len(tmp) == 2:
|
||||||
fname = tmp[1].strip('\r\n')
|
fname = tmp[1].strip('\r\n')
|
||||||
@ -41,26 +43,26 @@ def parse(file):
|
|||||||
test[fname][k] = 'NA'
|
test[fname][k] = 'NA'
|
||||||
test[fname][t[1]] = t[0]
|
test[fname][t[1]] = t[0]
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print test[fname][t[1]]
|
print(test[fname][t[1]])
|
||||||
else :
|
else :
|
||||||
try:
|
try:
|
||||||
n = t[0].split('RESULT-')[1]
|
n = t[0].split('RESULT-')[1]
|
||||||
|
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print n;
|
print(n);
|
||||||
|
|
||||||
if n == 'llc' or n == 'jit-comptime' or n == 'compile':
|
if n == 'llc' or n == 'jit-comptime' or n == 'compile':
|
||||||
test[fname][tp + n] = float(t[2].split(' ')[2])
|
test[fname][tp + n] = float(t[2].split(' ')[2])
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print test[fname][tp + n]
|
print(test[fname][tp + n])
|
||||||
|
|
||||||
elif n.endswith('-time') :
|
elif n.endswith('-time') :
|
||||||
test[fname][exp + n] = float(t[2].strip('\r\n'))
|
test[fname][exp + n] = float(t[2].strip('\r\n'))
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print test[fname][exp + n]
|
print(test[fname][exp + n])
|
||||||
|
|
||||||
else :
|
else :
|
||||||
print "ERROR!"
|
print("ERROR!")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
except:
|
except:
|
||||||
@ -73,7 +75,7 @@ def diffResults(d_old, d_new):
|
|||||||
|
|
||||||
for t in sorted(d_old.keys()) :
|
for t in sorted(d_old.keys()) :
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print t
|
print(t)
|
||||||
|
|
||||||
if d_new.has_key(t) :
|
if d_new.has_key(t) :
|
||||||
|
|
||||||
@ -83,42 +85,42 @@ def diffResults(d_old, d_new):
|
|||||||
if d_new[t].has_key(x):
|
if d_new[t].has_key(x):
|
||||||
if d_old[t][x] == 'PASS':
|
if d_old[t][x] == 'PASS':
|
||||||
if d_new[t][x] != 'PASS':
|
if d_new[t][x] != 'PASS':
|
||||||
print t + " *** REGRESSION (" + x + ")\n"
|
print(t + " *** REGRESSION (" + x + ")\n")
|
||||||
else:
|
else:
|
||||||
if d_new[t][x] == 'PASS':
|
if d_new[t][x] == 'PASS':
|
||||||
print t + " * NEW PASS (" + x + ")\n"
|
print(t + " * NEW PASS (" + x + ")\n")
|
||||||
|
|
||||||
else :
|
else :
|
||||||
print t + "*** REGRESSION (" + x + ")\n"
|
print(t + "*** REGRESSION (" + x + ")\n")
|
||||||
|
|
||||||
# For execution time, if there is no result, its a fail.
|
# For execution time, if there is no result, its a fail.
|
||||||
for x in exectime:
|
for x in exectime:
|
||||||
if d_old[t].has_key(tp + x):
|
if d_old[t].has_key(tp + x):
|
||||||
if not d_new[t].has_key(tp + x):
|
if not d_new[t].has_key(tp + x):
|
||||||
print t + " *** REGRESSION (" + tp + x + ")\n"
|
print(t + " *** REGRESSION (" + tp + x + ")\n")
|
||||||
|
|
||||||
else :
|
else :
|
||||||
if d_new[t].has_key(tp + x):
|
if d_new[t].has_key(tp + x):
|
||||||
print t + " * NEW PASS (" + tp + x + ")\n"
|
print(t + " * NEW PASS (" + tp + x + ")\n")
|
||||||
|
|
||||||
|
|
||||||
for x in comptime:
|
for x in comptime:
|
||||||
if d_old[t].has_key(exp + x):
|
if d_old[t].has_key(exp + x):
|
||||||
if not d_new[t].has_key(exp + x):
|
if not d_new[t].has_key(exp + x):
|
||||||
print t + " *** REGRESSION (" + exp + x + ")\n"
|
print(t + " *** REGRESSION (" + exp + x + ")\n")
|
||||||
|
|
||||||
else :
|
else :
|
||||||
if d_new[t].has_key(exp + x):
|
if d_new[t].has_key(exp + x):
|
||||||
print t + " * NEW PASS (" + exp + x + ")\n"
|
print(t + " * NEW PASS (" + exp + x + ")\n")
|
||||||
|
|
||||||
else :
|
else :
|
||||||
print t + ": Removed from test-suite.\n"
|
print(t + ": Removed from test-suite.\n")
|
||||||
|
|
||||||
|
|
||||||
#Main
|
#Main
|
||||||
if len(sys.argv) < 3 :
|
if len(sys.argv) < 3 :
|
||||||
print 'Usage:', sys.argv[0], \
|
print('Usage:', sys.argv[0], \
|
||||||
'<old log> <new log>'
|
'<old log> <new log>')
|
||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
|
|
||||||
d_old = parse(sys.argv[1])
|
d_old = parse(sys.argv[1])
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
import re, string, sys, os, time, math
|
import re, string, sys, os, time, math
|
||||||
|
|
||||||
DEBUG = 0
|
DEBUG = 0
|
||||||
@ -18,13 +20,13 @@ def parse(file):
|
|||||||
fname = ''
|
fname = ''
|
||||||
for t in r:
|
for t in r:
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print t
|
print(t)
|
||||||
|
|
||||||
if t[0] == 'PASS' or t[0] == 'FAIL' :
|
if t[0] == 'PASS' or t[0] == 'FAIL' :
|
||||||
tmp = t[2].split('llvm-test/')
|
tmp = t[2].split('llvm-test/')
|
||||||
|
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print tmp
|
print(tmp)
|
||||||
|
|
||||||
if len(tmp) == 2:
|
if len(tmp) == 2:
|
||||||
fname = tmp[1].strip('\r\n')
|
fname = tmp[1].strip('\r\n')
|
||||||
@ -41,7 +43,7 @@ def parse(file):
|
|||||||
n = t[0].split('RESULT-')[1]
|
n = t[0].split('RESULT-')[1]
|
||||||
|
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print "n == ", n;
|
print("n == ", n);
|
||||||
|
|
||||||
if n == 'compile-success':
|
if n == 'compile-success':
|
||||||
test[fname]['compile time'] = float(t[2].split('program')[1].strip('\r\n'))
|
test[fname]['compile time'] = float(t[2].split('program')[1].strip('\r\n'))
|
||||||
@ -49,7 +51,7 @@ def parse(file):
|
|||||||
elif n == 'exec-success':
|
elif n == 'exec-success':
|
||||||
test[fname]['exec time'] = float(t[2].split('program')[1].strip('\r\n'))
|
test[fname]['exec time'] = float(t[2].split('program')[1].strip('\r\n'))
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print test[fname][string.replace(n, '-success', '')]
|
print(test[fname][string.replace(n, '-success', '')])
|
||||||
|
|
||||||
else :
|
else :
|
||||||
# print "ERROR!"
|
# print "ERROR!"
|
||||||
@ -120,36 +122,36 @@ def diffResults(d_old, d_new):
|
|||||||
removed += t + "\n"
|
removed += t + "\n"
|
||||||
|
|
||||||
if len(regressions['compile state']) != 0:
|
if len(regressions['compile state']) != 0:
|
||||||
print 'REGRESSION: Compilation Failed'
|
print('REGRESSION: Compilation Failed')
|
||||||
print regressions['compile state']
|
print(regressions['compile state'])
|
||||||
|
|
||||||
if len(regressions['exec state']) != 0:
|
if len(regressions['exec state']) != 0:
|
||||||
print 'REGRESSION: Execution Failed'
|
print('REGRESSION: Execution Failed')
|
||||||
print regressions['exec state']
|
print(regressions['exec state'])
|
||||||
|
|
||||||
if len(regressions['compile time']) != 0:
|
if len(regressions['compile time']) != 0:
|
||||||
print 'REGRESSION: Compilation Time'
|
print('REGRESSION: Compilation Time')
|
||||||
print regressions['compile time']
|
print(regressions['compile time'])
|
||||||
|
|
||||||
if len(regressions['exec time']) != 0:
|
if len(regressions['exec time']) != 0:
|
||||||
print 'REGRESSION: Execution Time'
|
print('REGRESSION: Execution Time')
|
||||||
print regressions['exec time']
|
print(regressions['exec time'])
|
||||||
|
|
||||||
if len(passes['compile state']) != 0:
|
if len(passes['compile state']) != 0:
|
||||||
print 'NEW PASSES: Compilation'
|
print('NEW PASSES: Compilation')
|
||||||
print passes['compile state']
|
print(passes['compile state'])
|
||||||
|
|
||||||
if len(passes['exec state']) != 0:
|
if len(passes['exec state']) != 0:
|
||||||
print 'NEW PASSES: Execution'
|
print('NEW PASSES: Execution')
|
||||||
print passes['exec state']
|
print(passes['exec state'])
|
||||||
|
|
||||||
if len(removed) != 0:
|
if len(removed) != 0:
|
||||||
print 'REMOVED TESTS'
|
print('REMOVED TESTS')
|
||||||
print removed
|
print(removed)
|
||||||
|
|
||||||
# Main
|
# Main
|
||||||
if len(sys.argv) < 3 :
|
if len(sys.argv) < 3 :
|
||||||
print 'Usage:', sys.argv[0], '<old log> <new log>'
|
print('Usage:', sys.argv[0], '<old log> <new log>')
|
||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
|
|
||||||
d_old = parse(sys.argv[1])
|
d_old = parse(sys.argv[1])
|
||||||
|
@ -13,6 +13,8 @@ set of transforms you want to test, and run the program. If it crashes, it found
|
|||||||
a bug.
|
a bug.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import itertools
|
import itertools
|
||||||
import random
|
import random
|
||||||
@ -109,13 +111,13 @@ def main():
|
|||||||
|
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
# Print out the shuffle sequence in a compact form.
|
# Print out the shuffle sequence in a compact form.
|
||||||
print >>sys.stderr, ('Testing shuffle sequence "%s" (v%d%s):' %
|
print(('Testing shuffle sequence "%s" (v%d%s):' %
|
||||||
(args.seed, width, element_type))
|
(args.seed, width, element_type)), file=sys.stderr)
|
||||||
for i, shuffles in enumerate(shuffle_tree):
|
for i, shuffles in enumerate(shuffle_tree):
|
||||||
print >>sys.stderr, ' tree level %d:' % (i,)
|
print(' tree level %d:' % (i,), file=sys.stderr)
|
||||||
for j, s in enumerate(shuffles):
|
for j, s in enumerate(shuffles):
|
||||||
print >>sys.stderr, ' shuffle %d: %s' % (j, s)
|
print(' shuffle %d: %s' % (j, s), file=sys.stderr)
|
||||||
print >>sys.stderr, ''
|
print('', file=sys.stderr)
|
||||||
|
|
||||||
# Symbolically evaluate the shuffle tree.
|
# Symbolically evaluate the shuffle tree.
|
||||||
inputs = [[int(j % element_modulus)
|
inputs = [[int(j % element_modulus)
|
||||||
@ -128,15 +130,15 @@ def main():
|
|||||||
for j in s]
|
for j in s]
|
||||||
for i, s in enumerate(shuffles)]
|
for i, s in enumerate(shuffles)]
|
||||||
if len(results) != 1:
|
if len(results) != 1:
|
||||||
print >>sys.stderr, 'ERROR: Bad results: %s' % (results,)
|
print('ERROR: Bad results: %s' % (results,), file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
result = results[0]
|
result = results[0]
|
||||||
|
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print >>sys.stderr, 'Which transforms:'
|
print('Which transforms:', file=sys.stderr)
|
||||||
print >>sys.stderr, ' from: %s' % (inputs,)
|
print(' from: %s' % (inputs,), file=sys.stderr)
|
||||||
print >>sys.stderr, ' into: %s' % (result,)
|
print(' into: %s' % (result,), file=sys.stderr)
|
||||||
print >>sys.stderr, ''
|
print('', file=sys.stderr)
|
||||||
|
|
||||||
# The IR uses silly names for floating point types. We also need a same-size
|
# The IR uses silly names for floating point types. We also need a same-size
|
||||||
# integer type.
|
# integer type.
|
||||||
@ -150,25 +152,25 @@ def main():
|
|||||||
|
|
||||||
# Now we need to generate IR for the shuffle function.
|
# Now we need to generate IR for the shuffle function.
|
||||||
subst = {'N': width, 'T': element_type, 'IT': integral_element_type}
|
subst = {'N': width, 'T': element_type, 'IT': integral_element_type}
|
||||||
print """
|
print("""
|
||||||
define internal fastcc <%(N)d x %(T)s> @test(%(arguments)s) noinline nounwind {
|
define internal fastcc <%(N)d x %(T)s> @test(%(arguments)s) noinline nounwind {
|
||||||
entry:""" % dict(subst,
|
entry:""" % dict(subst,
|
||||||
arguments=', '.join(
|
arguments=', '.join(
|
||||||
['<%(N)d x %(T)s> %%s.0.%(i)d' % dict(subst, i=i)
|
['<%(N)d x %(T)s> %%s.0.%(i)d' % dict(subst, i=i)
|
||||||
for i in xrange(args.max_shuffle_height + 1)]))
|
for i in xrange(args.max_shuffle_height + 1)])))
|
||||||
|
|
||||||
for i, shuffles in enumerate(shuffle_tree):
|
for i, shuffles in enumerate(shuffle_tree):
|
||||||
for j, s in enumerate(shuffles):
|
for j, s in enumerate(shuffles):
|
||||||
print """
|
print("""
|
||||||
%%s.%(next_i)d.%(j)d = shufflevector <%(N)d x %(T)s> %%s.%(i)d.%(j)d, <%(N)d x %(T)s> %%s.%(i)d.%(next_j)d, <%(N)d x i32> <%(S)s>
|
%%s.%(next_i)d.%(j)d = shufflevector <%(N)d x %(T)s> %%s.%(i)d.%(j)d, <%(N)d x %(T)s> %%s.%(i)d.%(next_j)d, <%(N)d x i32> <%(S)s>
|
||||||
""".strip('\n') % dict(subst, i=i, next_i=i + 1, j=j, next_j=j + 1,
|
""".strip('\n') % dict(subst, i=i, next_i=i + 1, j=j, next_j=j + 1,
|
||||||
S=', '.join(['i32 ' + (str(si) if si != -1 else 'undef')
|
S=', '.join(['i32 ' + (str(si) if si != -1 else 'undef')
|
||||||
for si in s]))
|
for si in s])))
|
||||||
|
|
||||||
print """
|
print("""
|
||||||
ret <%(N)d x %(T)s> %%s.%(i)d.0
|
ret <%(N)d x %(T)s> %%s.%(i)d.0
|
||||||
}
|
}
|
||||||
""" % dict(subst, i=len(shuffle_tree))
|
""" % dict(subst, i=len(shuffle_tree)))
|
||||||
|
|
||||||
# Generate some string constants that we can use to report errors.
|
# Generate some string constants that we can use to report errors.
|
||||||
for i, r in enumerate(result):
|
for i, r in enumerate(result):
|
||||||
@ -176,24 +178,24 @@ entry:""" % dict(subst,
|
|||||||
s = ('FAIL(%(seed)s): lane %(lane)d, expected %(result)d, found %%d\n\\0A' %
|
s = ('FAIL(%(seed)s): lane %(lane)d, expected %(result)d, found %%d\n\\0A' %
|
||||||
{'seed': args.seed, 'lane': i, 'result': r})
|
{'seed': args.seed, 'lane': i, 'result': r})
|
||||||
s += ''.join(['\\00' for _ in itertools.repeat(None, 128 - len(s) + 2)])
|
s += ''.join(['\\00' for _ in itertools.repeat(None, 128 - len(s) + 2)])
|
||||||
print """
|
print("""
|
||||||
@error.%(i)d = private unnamed_addr global [128 x i8] c"%(s)s"
|
@error.%(i)d = private unnamed_addr global [128 x i8] c"%(s)s"
|
||||||
""".strip() % {'i': i, 's': s}
|
""".strip() % {'i': i, 's': s})
|
||||||
|
|
||||||
# Define a wrapper function which is marked 'optnone' to prevent
|
# Define a wrapper function which is marked 'optnone' to prevent
|
||||||
# interprocedural optimizations from deleting the test.
|
# interprocedural optimizations from deleting the test.
|
||||||
print """
|
print("""
|
||||||
define internal fastcc <%(N)d x %(T)s> @test_wrapper(%(arguments)s) optnone noinline {
|
define internal fastcc <%(N)d x %(T)s> @test_wrapper(%(arguments)s) optnone noinline {
|
||||||
%%result = call fastcc <%(N)d x %(T)s> @test(%(arguments)s)
|
%%result = call fastcc <%(N)d x %(T)s> @test(%(arguments)s)
|
||||||
ret <%(N)d x %(T)s> %%result
|
ret <%(N)d x %(T)s> %%result
|
||||||
}
|
}
|
||||||
""" % dict(subst,
|
""" % dict(subst,
|
||||||
arguments=', '.join(['<%(N)d x %(T)s> %%s.%(i)d' % dict(subst, i=i)
|
arguments=', '.join(['<%(N)d x %(T)s> %%s.%(i)d' % dict(subst, i=i)
|
||||||
for i in xrange(args.max_shuffle_height + 1)]))
|
for i in xrange(args.max_shuffle_height + 1)])))
|
||||||
|
|
||||||
# Finally, generate a main function which will trap if any lanes are mapped
|
# Finally, generate a main function which will trap if any lanes are mapped
|
||||||
# incorrectly (in an observable way).
|
# incorrectly (in an observable way).
|
||||||
print """
|
print("""
|
||||||
define i32 @main() {
|
define i32 @main() {
|
||||||
entry:
|
entry:
|
||||||
; Create a scratch space to print error messages.
|
; Create a scratch space to print error messages.
|
||||||
@ -212,18 +214,18 @@ entry:
|
|||||||
'(<%(N)d x %(IT)s> <%(input)s> to <%(N)d x %(T)s>)' %
|
'(<%(N)d x %(IT)s> <%(input)s> to <%(N)d x %(T)s>)' %
|
||||||
dict(subst, input=', '.join(['%(IT)s %(i)d' % dict(subst, i=i)
|
dict(subst, input=', '.join(['%(IT)s %(i)d' % dict(subst, i=i)
|
||||||
for i in input])))
|
for i in input])))
|
||||||
for input in inputs]))
|
for input in inputs])))
|
||||||
|
|
||||||
# Test that each non-undef result lane contains the expected value.
|
# Test that each non-undef result lane contains the expected value.
|
||||||
for i, r in enumerate(result):
|
for i, r in enumerate(result):
|
||||||
if r == -1:
|
if r == -1:
|
||||||
print """
|
print("""
|
||||||
test.%(i)d:
|
test.%(i)d:
|
||||||
; Skip this lane, its value is undef.
|
; Skip this lane, its value is undef.
|
||||||
br label %%test.%(next_i)d
|
br label %%test.%(next_i)d
|
||||||
""" % dict(subst, i=i, next_i=i + 1)
|
""" % dict(subst, i=i, next_i=i + 1))
|
||||||
else:
|
else:
|
||||||
print """
|
print("""
|
||||||
test.%(i)d:
|
test.%(i)d:
|
||||||
%%v.%(i)d = extractelement <%(N)d x %(IT)s> %%v.cast, i32 %(i)d
|
%%v.%(i)d = extractelement <%(N)d x %(IT)s> %%v.cast, i32 %(i)d
|
||||||
%%cmp.%(i)d = icmp ne %(IT)s %%v.%(i)d, %(r)d
|
%%cmp.%(i)d = icmp ne %(IT)s %%v.%(i)d, %(r)d
|
||||||
@ -238,9 +240,9 @@ die.%(i)d:
|
|||||||
call i32 @write(i32 2, i8* %%str.ptr, i32 %%length.%(i)d)
|
call i32 @write(i32 2, i8* %%str.ptr, i32 %%length.%(i)d)
|
||||||
call void @llvm.trap()
|
call void @llvm.trap()
|
||||||
unreachable
|
unreachable
|
||||||
""" % dict(subst, i=i, next_i=i + 1, r=r)
|
""" % dict(subst, i=i, next_i=i + 1, r=r))
|
||||||
|
|
||||||
print """
|
print("""
|
||||||
test.%d:
|
test.%d:
|
||||||
ret i32 0
|
ret i32 0
|
||||||
}
|
}
|
||||||
@ -249,7 +251,7 @@ declare i32 @strlen(i8*)
|
|||||||
declare i32 @write(i32, i8*, i32)
|
declare i32 @write(i32, i8*, i32)
|
||||||
declare i32 @sprintf(i8*, i8*, ...)
|
declare i32 @sprintf(i8*, i8*, ...)
|
||||||
declare void @llvm.trap() noreturn nounwind
|
declare void @llvm.trap() noreturn nounwind
|
||||||
""" % (len(result),)
|
""" % (len(result),))
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -13,6 +13,7 @@ Take the output IR printed to stdout, compile it to an executable using whatever
|
|||||||
set of transforms you want to test, and run the program. If it crashes, it found
|
set of transforms you want to test, and run the program. If it crashes, it found
|
||||||
a bug (an error message with the expected and actual result is printed).
|
a bug (an error message with the expected and actual result is printed).
|
||||||
"""
|
"""
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import random
|
import random
|
||||||
import uuid
|
import uuid
|
||||||
@ -145,7 +146,7 @@ class ShufInstr(Instruction):
|
|||||||
|
|
||||||
def calc_value(self):
|
def calc_value(self):
|
||||||
if self.value != None:
|
if self.value != None:
|
||||||
print 'Trying to calculate the value of a shuffle instruction twice'
|
print('Trying to calculate the value of a shuffle instruction twice')
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
result = []
|
result = []
|
||||||
@ -179,7 +180,7 @@ class SelectInstr(Instruction):
|
|||||||
|
|
||||||
def calc_value(self):
|
def calc_value(self):
|
||||||
if self.value != None:
|
if self.value != None:
|
||||||
print 'Trying to calculate the value of a select instruction twice'
|
print('Trying to calculate the value of a select instruction twice')
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
result = []
|
result = []
|
||||||
@ -343,7 +344,7 @@ def main():
|
|||||||
help='Choose specific number of vector elements to be tested. (default: random)')
|
help='Choose specific number of vector elements to be tested. (default: random)')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
print '; The seed used for this test is ' + args.seed
|
print('; The seed used for this test is ' + args.seed)
|
||||||
|
|
||||||
assert args.min_num_inputs < args.max_num_inputs , "Minimum value greater than maximum."
|
assert args.min_num_inputs < args.max_num_inputs , "Minimum value greater than maximum."
|
||||||
assert args.type in [None, 'i8', 'i16', 'i32', 'i64', 'f32', 'f64'], "Illegal type."
|
assert args.type in [None, 'i8', 'i16', 'i32', 'i64', 'f32', 'f64'], "Illegal type."
|
||||||
@ -362,14 +363,14 @@ def main():
|
|||||||
|
|
||||||
# print the actual test function by dumping the generated instructions.
|
# print the actual test function by dumping the generated instructions.
|
||||||
insts_str = ''.join([inst.dump() for inst in insts])
|
insts_str = ''.join([inst.dump() for inst in insts])
|
||||||
print test_template.format(ty = ty.dump(), inputs = inputs_str,
|
print(test_template.format(ty = ty.dump(), inputs = inputs_str,
|
||||||
instructions = insts_str, last_name = res.name)
|
instructions = insts_str, last_name = res.name))
|
||||||
|
|
||||||
# Print the error message templates as global strings
|
# Print the error message templates as global strings
|
||||||
for i in range(len(res.value)):
|
for i in range(len(res.value)):
|
||||||
pad = ''.join(['\\00']*(31 - len(str(i)) - len(str(res.value[i]))))
|
pad = ''.join(['\\00']*(31 - len(str(i)) - len(str(res.value[i]))))
|
||||||
print error_template.format(lane = str(i), exp = str(res.value[i]),
|
print(error_template.format(lane = str(i), exp = str(res.value[i]),
|
||||||
padding = pad)
|
padding = pad))
|
||||||
|
|
||||||
# Prepare the runtime checks and failure handlers.
|
# Prepare the runtime checks and failure handlers.
|
||||||
scalar_ty = ty.get_scalar_type()
|
scalar_ty = ty.get_scalar_type()
|
||||||
@ -395,7 +396,7 @@ def main():
|
|||||||
inputs_values = [', '.join([scalar_ty.dump() + ' ' + str(i) for i in inp]) for inp in inputs_values]
|
inputs_values = [', '.join([scalar_ty.dump() + ' ' + str(i) for i in inp]) for inp in inputs_values]
|
||||||
inputs = ', '.join([ty.dump() + ' <' + inp + '>' for inp in inputs_values])
|
inputs = ', '.join([ty.dump() + ' <' + inp + '>' for inp in inputs_values])
|
||||||
|
|
||||||
print main_template.format(ty = ty.dump(), inputs = inputs, check_die = check_die)
|
print(main_template.format(ty = ty.dump(), inputs = inputs, check_die = check_die))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
@ -17,6 +17,8 @@ Right now this generates a function which implements simple case folding (C+S
|
|||||||
entries).
|
entries).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import re
|
import re
|
||||||
import urllib2
|
import urllib2
|
||||||
@ -116,22 +118,22 @@ f.close()
|
|||||||
|
|
||||||
dump_block(current_block)
|
dump_block(current_block)
|
||||||
|
|
||||||
print '//===---------- Support/UnicodeCaseFold.cpp -------------------------------===//'
|
print('//===---------- Support/UnicodeCaseFold.cpp -------------------------------===//')
|
||||||
print '//'
|
print('//')
|
||||||
print '// This file was generated by utils/unicode-case-fold.py from the Unicode'
|
print('// This file was generated by utils/unicode-case-fold.py from the Unicode')
|
||||||
print '// case folding database at'
|
print('// case folding database at')
|
||||||
print '// ', sys.argv[1]
|
print('// ', sys.argv[1])
|
||||||
print '//'
|
print('//')
|
||||||
print '// To regenerate this file, run:'
|
print('// To regenerate this file, run:')
|
||||||
print '// utils/unicode-case-fold.py \\'
|
print('// utils/unicode-case-fold.py \\')
|
||||||
print '// "{}" \\'.format(sys.argv[1])
|
print('// "{}" \\'.format(sys.argv[1]))
|
||||||
print '// > lib/Support/UnicodeCaseFold.cpp'
|
print('// > lib/Support/UnicodeCaseFold.cpp')
|
||||||
print '//'
|
print('//')
|
||||||
print '//===----------------------------------------------------------------------===//'
|
print('//===----------------------------------------------------------------------===//')
|
||||||
print ''
|
print('')
|
||||||
print '#include "llvm/Support/Unicode.h"'
|
print('#include "llvm/Support/Unicode.h"')
|
||||||
print ''
|
print('')
|
||||||
print "int llvm::sys::unicode::foldCharSimple(int C) {"
|
print("int llvm::sys::unicode::foldCharSimple(int C) {")
|
||||||
print body
|
print(body)
|
||||||
print " return C;"
|
print(" return C;")
|
||||||
print "}"
|
print("}")
|
||||||
|
@ -29,6 +29,8 @@ The script is designed to make adding checks to a test case fast, it is *not*
|
|||||||
designed to be authoratitive about what constitutes a good test!
|
designed to be authoratitive about what constitutes a good test!
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import itertools
|
import itertools
|
||||||
import os # Used to advertise this file's name ("autogenerated_note").
|
import os # Used to advertise this file's name ("autogenerated_note").
|
||||||
@ -66,12 +68,12 @@ def main():
|
|||||||
|
|
||||||
opt_basename = os.path.basename(args.opt_binary)
|
opt_basename = os.path.basename(args.opt_binary)
|
||||||
if (opt_basename != "opt"):
|
if (opt_basename != "opt"):
|
||||||
print >>sys.stderr, 'ERROR: Unexpected opt name: ' + opt_basename
|
print('ERROR: Unexpected opt name: ' + opt_basename, file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
for test in args.tests:
|
for test in args.tests:
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print >>sys.stderr, 'Scanning for RUN lines in test file: %s' % (test,)
|
print('Scanning for RUN lines in test file: %s' % (test,), file=sys.stderr)
|
||||||
with open(test) as f:
|
with open(test) as f:
|
||||||
input_lines = [l.rstrip() for l in f]
|
input_lines = [l.rstrip() for l in f]
|
||||||
|
|
||||||
@ -85,20 +87,20 @@ def main():
|
|||||||
run_lines.append(l)
|
run_lines.append(l)
|
||||||
|
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print >>sys.stderr, 'Found %d RUN lines:' % (len(run_lines),)
|
print('Found %d RUN lines:' % (len(run_lines),), file=sys.stderr)
|
||||||
for l in run_lines:
|
for l in run_lines:
|
||||||
print >>sys.stderr, ' RUN: ' + l
|
print(' RUN: ' + l, file=sys.stderr)
|
||||||
|
|
||||||
prefix_list = []
|
prefix_list = []
|
||||||
for l in run_lines:
|
for l in run_lines:
|
||||||
(tool_cmd, filecheck_cmd) = tuple([cmd.strip() for cmd in l.split('|', 1)])
|
(tool_cmd, filecheck_cmd) = tuple([cmd.strip() for cmd in l.split('|', 1)])
|
||||||
|
|
||||||
if not tool_cmd.startswith(opt_basename + ' '):
|
if not tool_cmd.startswith(opt_basename + ' '):
|
||||||
print >>sys.stderr, 'WARNING: Skipping non-%s RUN line: %s' % (opt_basename, l)
|
print('WARNING: Skipping non-%s RUN line: %s' % (opt_basename, l), file=sys.stderr)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not filecheck_cmd.startswith('FileCheck '):
|
if not filecheck_cmd.startswith('FileCheck '):
|
||||||
print >>sys.stderr, 'WARNING: Skipping non-FileChecked RUN line: ' + l
|
print('WARNING: Skipping non-FileChecked RUN line: ' + l, file=sys.stderr)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
tool_cmd_args = tool_cmd[len(opt_basename):].strip()
|
tool_cmd_args = tool_cmd[len(opt_basename):].strip()
|
||||||
@ -119,8 +121,8 @@ def main():
|
|||||||
func_dict.update({prefix: dict()})
|
func_dict.update({prefix: dict()})
|
||||||
for prefixes, opt_args in prefix_list:
|
for prefixes, opt_args in prefix_list:
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print >>sys.stderr, 'Extracted opt cmd: ' + opt_basename + ' ' + opt_args
|
print('Extracted opt cmd: ' + opt_basename + ' ' + opt_args, file=sys.stderr)
|
||||||
print >>sys.stderr, 'Extracted FileCheck prefixes: ' + str(prefixes)
|
print('Extracted FileCheck prefixes: ' + str(prefixes), file=sys.stderr)
|
||||||
|
|
||||||
raw_tool_outputs = common.invoke_tool(args.opt_binary, opt_args, test)
|
raw_tool_outputs = common.invoke_tool(args.opt_binary, opt_args, test)
|
||||||
|
|
||||||
@ -134,7 +136,7 @@ def main():
|
|||||||
is_in_function_start = False
|
is_in_function_start = False
|
||||||
prefix_set = set([prefix for prefixes, _ in prefix_list for prefix in prefixes])
|
prefix_set = set([prefix for prefixes, _ in prefix_list for prefix in prefixes])
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print >>sys.stderr, 'Rewriting FileCheck prefixes: %s' % (prefix_set,)
|
print('Rewriting FileCheck prefixes: %s' % (prefix_set,), file=sys.stderr)
|
||||||
output_lines = []
|
output_lines = []
|
||||||
output_lines.append(autogenerated_note)
|
output_lines.append(autogenerated_note)
|
||||||
|
|
||||||
@ -181,7 +183,7 @@ def main():
|
|||||||
is_in_function = is_in_function_start = True
|
is_in_function = is_in_function_start = True
|
||||||
|
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print>>sys.stderr, 'Writing %d lines to %s...' % (len(output_lines), test)
|
print('Writing %d lines to %s...' % (len(output_lines), test), file=sys.stderr)
|
||||||
|
|
||||||
with open(test, 'wb') as f:
|
with open(test, 'wb') as f:
|
||||||
f.writelines([l + '\n' for l in output_lines])
|
f.writelines([l + '\n' for l in output_lines])
|
||||||
|
@ -7,6 +7,8 @@ FileCheck patterns. It can either update all of the tests in the file or
|
|||||||
a single test function.
|
a single test function.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import os # Used to advertise this file's name ("autogenerated_note").
|
import os # Used to advertise this file's name ("autogenerated_note").
|
||||||
import string
|
import string
|
||||||
@ -42,7 +44,7 @@ def main():
|
|||||||
|
|
||||||
for test in args.tests:
|
for test in args.tests:
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print >>sys.stderr, 'Scanning for RUN lines in test file: %s' % (test,)
|
print('Scanning for RUN lines in test file: %s' % (test,), file=sys.stderr)
|
||||||
with open(test) as f:
|
with open(test) as f:
|
||||||
input_lines = [l.rstrip() for l in f]
|
input_lines = [l.rstrip() for l in f]
|
||||||
|
|
||||||
@ -63,9 +65,9 @@ def main():
|
|||||||
run_lines.append(l)
|
run_lines.append(l)
|
||||||
|
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print >>sys.stderr, 'Found %d RUN lines:' % (len(run_lines),)
|
print('Found %d RUN lines:' % (len(run_lines),), file=sys.stderr)
|
||||||
for l in run_lines:
|
for l in run_lines:
|
||||||
print >>sys.stderr, ' RUN: ' + l
|
print(' RUN: ' + l, file=sys.stderr)
|
||||||
|
|
||||||
run_list = []
|
run_list = []
|
||||||
for l in run_lines:
|
for l in run_lines:
|
||||||
@ -81,11 +83,11 @@ def main():
|
|||||||
if len(commands) > 1:
|
if len(commands) > 1:
|
||||||
filecheck_cmd = commands[1]
|
filecheck_cmd = commands[1]
|
||||||
if not llc_cmd.startswith('llc '):
|
if not llc_cmd.startswith('llc '):
|
||||||
print >>sys.stderr, 'WARNING: Skipping non-llc RUN line: ' + l
|
print('WARNING: Skipping non-llc RUN line: ' + l, file=sys.stderr)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not filecheck_cmd.startswith('FileCheck '):
|
if not filecheck_cmd.startswith('FileCheck '):
|
||||||
print >>sys.stderr, 'WARNING: Skipping non-FileChecked RUN line: ' + l
|
print('WARNING: Skipping non-FileChecked RUN line: ' + l, file=sys.stderr)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
llc_cmd_args = llc_cmd[len('llc'):].strip()
|
llc_cmd_args = llc_cmd[len('llc'):].strip()
|
||||||
@ -107,12 +109,12 @@ def main():
|
|||||||
func_dict.update({prefix: dict()})
|
func_dict.update({prefix: dict()})
|
||||||
for prefixes, llc_args, triple_in_cmd in run_list:
|
for prefixes, llc_args, triple_in_cmd in run_list:
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print >>sys.stderr, 'Extracted LLC cmd: llc ' + llc_args
|
print('Extracted LLC cmd: llc ' + llc_args, file=sys.stderr)
|
||||||
print >>sys.stderr, 'Extracted FileCheck prefixes: ' + str(prefixes)
|
print('Extracted FileCheck prefixes: ' + str(prefixes), file=sys.stderr)
|
||||||
|
|
||||||
raw_tool_output = common.invoke_tool(args.llc_binary, llc_args, test)
|
raw_tool_output = common.invoke_tool(args.llc_binary, llc_args, test)
|
||||||
if not (triple_in_cmd or triple_in_ir):
|
if not (triple_in_cmd or triple_in_ir):
|
||||||
print >>sys.stderr, "Cannot find a triple. Assume 'x86'"
|
print("Cannot find a triple. Assume 'x86'", file=sys.stderr)
|
||||||
|
|
||||||
asm.build_function_body_dictionary_for_triple(args, raw_tool_output,
|
asm.build_function_body_dictionary_for_triple(args, raw_tool_output,
|
||||||
triple_in_cmd or triple_in_ir or 'x86', prefixes, func_dict)
|
triple_in_cmd or triple_in_ir or 'x86', prefixes, func_dict)
|
||||||
@ -122,7 +124,7 @@ def main():
|
|||||||
func_name = None
|
func_name = None
|
||||||
prefix_set = set([prefix for p in run_list for prefix in p[0]])
|
prefix_set = set([prefix for p in run_list for prefix in p[0]])
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print >>sys.stderr, 'Rewriting FileCheck prefixes: %s' % (prefix_set,)
|
print('Rewriting FileCheck prefixes: %s' % (prefix_set,), file=sys.stderr)
|
||||||
output_lines = []
|
output_lines = []
|
||||||
output_lines.append(autogenerated_note)
|
output_lines.append(autogenerated_note)
|
||||||
|
|
||||||
@ -167,7 +169,7 @@ def main():
|
|||||||
is_in_function = is_in_function_start = True
|
is_in_function = is_in_function_start = True
|
||||||
|
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print>>sys.stderr, 'Writing %d lines to %s...' % (len(output_lines), test)
|
print('Writing %d lines to %s...' % (len(output_lines), test), file=sys.stderr)
|
||||||
|
|
||||||
with open(test, 'wb') as f:
|
with open(test, 'wb') as f:
|
||||||
f.writelines([l + '\n' for l in output_lines])
|
f.writelines([l + '\n' for l in output_lines])
|
||||||
|
@ -29,6 +29,8 @@ The script is designed to make adding checks to a test case fast, it is *not*
|
|||||||
designed to be authoratitive about what constitutes a good test!
|
designed to be authoratitive about what constitutes a good test!
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import itertools
|
import itertools
|
||||||
import os # Used to advertise this file's name ("autogenerated_note").
|
import os # Used to advertise this file's name ("autogenerated_note").
|
||||||
@ -66,12 +68,12 @@ def main():
|
|||||||
|
|
||||||
opt_basename = os.path.basename(args.opt_binary)
|
opt_basename = os.path.basename(args.opt_binary)
|
||||||
if (opt_basename != "opt"):
|
if (opt_basename != "opt"):
|
||||||
print >>sys.stderr, 'ERROR: Unexpected opt name: ' + opt_basename
|
print('ERROR: Unexpected opt name: ' + opt_basename, file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
for test in args.tests:
|
for test in args.tests:
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print >>sys.stderr, 'Scanning for RUN lines in test file: %s' % (test,)
|
print('Scanning for RUN lines in test file: %s' % (test,), file=sys.stderr)
|
||||||
with open(test) as f:
|
with open(test) as f:
|
||||||
input_lines = [l.rstrip() for l in f]
|
input_lines = [l.rstrip() for l in f]
|
||||||
|
|
||||||
@ -85,20 +87,20 @@ def main():
|
|||||||
run_lines.append(l)
|
run_lines.append(l)
|
||||||
|
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print >>sys.stderr, 'Found %d RUN lines:' % (len(run_lines),)
|
print('Found %d RUN lines:' % (len(run_lines),), file=sys.stderr)
|
||||||
for l in run_lines:
|
for l in run_lines:
|
||||||
print >>sys.stderr, ' RUN: ' + l
|
print(' RUN: ' + l, file=sys.stderr)
|
||||||
|
|
||||||
prefix_list = []
|
prefix_list = []
|
||||||
for l in run_lines:
|
for l in run_lines:
|
||||||
(tool_cmd, filecheck_cmd) = tuple([cmd.strip() for cmd in l.split('|', 1)])
|
(tool_cmd, filecheck_cmd) = tuple([cmd.strip() for cmd in l.split('|', 1)])
|
||||||
|
|
||||||
if not tool_cmd.startswith(opt_basename + ' '):
|
if not tool_cmd.startswith(opt_basename + ' '):
|
||||||
print >>sys.stderr, 'WARNING: Skipping non-%s RUN line: %s' % (opt_basename, l)
|
print('WARNING: Skipping non-%s RUN line: %s' % (opt_basename, l), file=sys.stderr)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not filecheck_cmd.startswith('FileCheck '):
|
if not filecheck_cmd.startswith('FileCheck '):
|
||||||
print >>sys.stderr, 'WARNING: Skipping non-FileChecked RUN line: ' + l
|
print('WARNING: Skipping non-FileChecked RUN line: ' + l, file=sys.stderr)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
tool_cmd_args = tool_cmd[len(opt_basename):].strip()
|
tool_cmd_args = tool_cmd[len(opt_basename):].strip()
|
||||||
@ -119,8 +121,8 @@ def main():
|
|||||||
func_dict.update({prefix: dict()})
|
func_dict.update({prefix: dict()})
|
||||||
for prefixes, opt_args in prefix_list:
|
for prefixes, opt_args in prefix_list:
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print >>sys.stderr, 'Extracted opt cmd: ' + opt_basename + ' ' + opt_args
|
print('Extracted opt cmd: ' + opt_basename + ' ' + opt_args, file=sys.stderr)
|
||||||
print >>sys.stderr, 'Extracted FileCheck prefixes: ' + str(prefixes)
|
print('Extracted FileCheck prefixes: ' + str(prefixes), file=sys.stderr)
|
||||||
|
|
||||||
raw_tool_output = common.invoke_tool(args.opt_binary, opt_args, test)
|
raw_tool_output = common.invoke_tool(args.opt_binary, opt_args, test)
|
||||||
common.build_function_body_dictionary(
|
common.build_function_body_dictionary(
|
||||||
@ -131,7 +133,7 @@ def main():
|
|||||||
is_in_function_start = False
|
is_in_function_start = False
|
||||||
prefix_set = set([prefix for prefixes, _ in prefix_list for prefix in prefixes])
|
prefix_set = set([prefix for prefixes, _ in prefix_list for prefix in prefixes])
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print >>sys.stderr, 'Rewriting FileCheck prefixes: %s' % (prefix_set,)
|
print('Rewriting FileCheck prefixes: %s' % (prefix_set,), file=sys.stderr)
|
||||||
output_lines = []
|
output_lines = []
|
||||||
output_lines.append(autogenerated_note)
|
output_lines.append(autogenerated_note)
|
||||||
|
|
||||||
@ -178,7 +180,7 @@ def main():
|
|||||||
is_in_function = is_in_function_start = True
|
is_in_function = is_in_function_start = True
|
||||||
|
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print>>sys.stderr, 'Writing %d lines to %s...' % (len(output_lines), test)
|
print('Writing %d lines to %s...' % (len(output_lines), test), file=sys.stderr)
|
||||||
|
|
||||||
with open(test, 'wb') as f:
|
with open(test, 'wb') as f:
|
||||||
f.writelines([l + '\n' for l in output_lines])
|
f.writelines([l + '\n' for l in output_lines])
|
||||||
|
@ -20,6 +20,7 @@ limitations:
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
import os
|
import os
|
||||||
|
|
||||||
code_owners = {}
|
code_owners = {}
|
||||||
@ -97,7 +98,7 @@ def find_owners(fpath):
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
if len(sys.argv) < 2:
|
if len(sys.argv) < 2:
|
||||||
print "usage " + sys.argv[0] + " file_or_folder"
|
print("usage " + sys.argv[0] + " file_or_folder")
|
||||||
exit(-1)
|
exit(-1)
|
||||||
|
|
||||||
# the path we are checking
|
# the path we are checking
|
||||||
@ -105,13 +106,13 @@ path = str(sys.argv[1])
|
|||||||
|
|
||||||
# check if this is real path
|
# check if this is real path
|
||||||
if not os.path.exists(path):
|
if not os.path.exists(path):
|
||||||
print "path (" + path + ") does not exist"
|
print("path (" + path + ") does not exist")
|
||||||
exit(-1)
|
exit(-1)
|
||||||
|
|
||||||
owners_name = find_owners(path)
|
owners_name = find_owners(path)
|
||||||
|
|
||||||
# be grammatically correct
|
# be grammatically correct
|
||||||
print "The owner(s) of the (" + path + ") is(are) : " + str(owners_name)
|
print("The owner(s) of the (" + path + ") is(are) : " + str(owners_name))
|
||||||
|
|
||||||
exit(0)
|
exit(0)
|
||||||
|
|
||||||
@ -119,7 +120,7 @@ exit(0)
|
|||||||
# not yet used
|
# not yet used
|
||||||
root = "."
|
root = "."
|
||||||
for dir,subdirList,fileList in os.walk( root , topdown=False ) :
|
for dir,subdirList,fileList in os.walk( root , topdown=False ) :
|
||||||
print "dir :" , dir
|
print("dir :" , dir)
|
||||||
for fname in fileList :
|
for fname in fileList :
|
||||||
print "-" , fname
|
print("-" , fname)
|
||||||
print
|
print()
|
||||||
|
Loading…
Reference in New Issue
Block a user