diff --git a/bindings/python/llvm/core.py b/bindings/python/llvm/core.py index 6b3da6d8679..43a318f2efb 100644 --- a/bindings/python/llvm/core.py +++ b/bindings/python/llvm/core.py @@ -6,6 +6,7 @@ # License. See LICENSE.TXT for details. # #===------------------------------------------------------------------------===# +from __future__ import print_function from .common import LLVMObject from .common import c_object_p @@ -605,7 +606,7 @@ def register_enumerations(): ] for enum_class, enum_spec in enums: for name, value in enum_spec: - print name, value + print(name, value) enum_class.register(name, value) return enums diff --git a/bindings/python/llvm/tests/test_bitreader.py b/bindings/python/llvm/tests/test_bitreader.py index d5850091a91..460005a2b87 100644 --- a/bindings/python/llvm/tests/test_bitreader.py +++ b/bindings/python/llvm/tests/test_bitreader.py @@ -1,3 +1,5 @@ +from __future__ import print_function + from .base import TestBase from ..core import OpCode from ..core import MemoryBuffer @@ -11,5 +13,5 @@ class TestBitReader(TestBase): def test_parse_bitcode(self): source = self.get_test_bc() m = parse_bitcode(MemoryBuffer(filename=source)) - print m.target - print m.datalayout + print(m.target) + print(m.datalayout) diff --git a/bindings/python/llvm/tests/test_core.py b/bindings/python/llvm/tests/test_core.py index da7b635ec99..68572b50b3d 100644 --- a/bindings/python/llvm/tests/test_core.py +++ b/bindings/python/llvm/tests/test_core.py @@ -1,3 +1,5 @@ +from __future__ import print_function + from .base import TestBase from ..core import MemoryBuffer from ..core import PassRegistry @@ -127,7 +129,7 @@ class TestCore(TestBase): self.assertEqual(inst.opcode, inst_list[i][1]) for op in range(len(inst)): o = inst.get_operand(op) - print o.name + print(o.name) o.dump() inst.dump() i += 1 diff --git a/bindings/python/llvm/tests/test_disassembler.py b/bindings/python/llvm/tests/test_disassembler.py index 37a04e4fc7e..f469ffbf393 100644 --- a/bindings/python/llvm/tests/test_disassembler.py +++ b/bindings/python/llvm/tests/test_disassembler.py @@ -1,3 +1,5 @@ +from __future__ import print_function + from .base import TestBase from ..disassembler import Disassembler, Option_UseMarkup @@ -38,6 +40,6 @@ class TestDisassembler(TestBase): disassembler = Disassembler(triple) disassembler.set_options(Option_UseMarkup) count, s = disassembler.get_instruction(sequence) - print s + print(s) self.assertEqual(count, 4) self.assertEqual(s, '\tpush\t{, }') diff --git a/docs/conf.py b/docs/conf.py index 254f334c013..7fdcb3d2f52 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -9,6 +9,7 @@ # # All configuration values have a default; values that are commented out # serve to show the default. +from __future__ import print_function import sys, os from datetime import date @@ -234,14 +235,14 @@ for name in os.listdir(command_guide_path): header = f.readline().rstrip('\n') if len(header) != len(title): - print >>sys.stderr, ( + print(( "error: invalid header in %r (does not match title)" % ( - file_subpath,)) + file_subpath,)), file=sys.stderr) if ' - ' not in title: - print >>sys.stderr, ( + print(( ("error: invalid title in %r " "(expected ' - ')") % ( - file_subpath,)) + file_subpath,)), file=sys.stderr) # Split the name out of the title. name,description = title.split(' - ', 1) diff --git a/examples/Kaleidoscope/MCJIT/cached/genk-timing.py b/examples/Kaleidoscope/MCJIT/cached/genk-timing.py index 96dd6db5da3..87bbfbf32bd 100644 --- a/examples/Kaleidoscope/MCJIT/cached/genk-timing.py +++ b/examples/Kaleidoscope/MCJIT/cached/genk-timing.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from __future__ import print_function + import sys import random @@ -173,7 +175,7 @@ class KScriptGenerator: def generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript): """ 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" % (numFuncs, elementsPerFunc, funcsBetweenExec)) print(" Call weighting = %f" % callWeighting) @@ -200,7 +202,7 @@ def generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callW script.writeEmptyLine() script.writeFinalFunctionCounts() 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) # 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: filename = "test-%d-%d-%d-%d.k" % (numFuncs, elementsPerFunc, funcsBetweenExec, int(callWeighting * 100)) generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript) -print "All done!" +print("All done!") diff --git a/examples/Kaleidoscope/MCJIT/cached/split-lib.py b/examples/Kaleidoscope/MCJIT/cached/split-lib.py index 5cdcc6d46c0..1aa80ee83ac 100644 --- a/examples/Kaleidoscope/MCJIT/cached/split-lib.py +++ b/examples/Kaleidoscope/MCJIT/cached/split-lib.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from __future__ import print_function + class TimingScriptGenerator: """Used to generate a bash script which will invoke the toy and time it""" def __init__(self, scriptname, outputname): @@ -47,7 +49,7 @@ def splitScript(inputname, libGenScript, timingScript): infile = open(inputname, "r") libfile = open(libname, "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: if not line.startswith("#"): 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: splitScript(script, libGenScript, timingScript) -print "All done!" +print("All done!") diff --git a/examples/Kaleidoscope/MCJIT/complete/genk-timing.py b/examples/Kaleidoscope/MCJIT/complete/genk-timing.py index 72591fe8bd4..c3b4d23c002 100644 --- a/examples/Kaleidoscope/MCJIT/complete/genk-timing.py +++ b/examples/Kaleidoscope/MCJIT/complete/genk-timing.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from __future__ import print_function + import sys import random @@ -178,7 +180,7 @@ class KScriptGenerator: def generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript): """ 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" % (numFuncs, elementsPerFunc, funcsBetweenExec)) print(" Call weighting = %f" % callWeighting) @@ -205,7 +207,7 @@ def generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callW script.writeEmptyLine() script.writeFinalFunctionCounts() 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) # 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: filename = "test-%d-%d-%d-%d.k" % (numFuncs, elementsPerFunc, funcsBetweenExec, int(callWeighting * 100)) generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript) -print "All done!" +print("All done!") diff --git a/examples/Kaleidoscope/MCJIT/complete/split-lib.py b/examples/Kaleidoscope/MCJIT/complete/split-lib.py index f6bec0276d8..61c9a5b169f 100644 --- a/examples/Kaleidoscope/MCJIT/complete/split-lib.py +++ b/examples/Kaleidoscope/MCJIT/complete/split-lib.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from __future__ import print_function + class TimingScriptGenerator: """Used to generate a bash script which will invoke the toy and time it""" def __init__(self, scriptname, outputname): @@ -47,7 +49,7 @@ def splitScript(inputname, libGenScript, timingScript): infile = open(inputname, "r") libfile = open(libname, "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: if not line.startswith("#"): 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: splitScript(script, libGenScript, timingScript) -print "All done!" +print("All done!") diff --git a/examples/Kaleidoscope/MCJIT/lazy/genk-timing.py b/examples/Kaleidoscope/MCJIT/lazy/genk-timing.py index 96dd6db5da3..87bbfbf32bd 100644 --- a/examples/Kaleidoscope/MCJIT/lazy/genk-timing.py +++ b/examples/Kaleidoscope/MCJIT/lazy/genk-timing.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from __future__ import print_function + import sys import random @@ -173,7 +175,7 @@ class KScriptGenerator: def generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript): """ 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" % (numFuncs, elementsPerFunc, funcsBetweenExec)) print(" Call weighting = %f" % callWeighting) @@ -200,7 +202,7 @@ def generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callW script.writeEmptyLine() script.writeFinalFunctionCounts() 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) # 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: filename = "test-%d-%d-%d-%d.k" % (numFuncs, elementsPerFunc, funcsBetweenExec, int(callWeighting * 100)) generateKScript(filename, numFuncs, elementsPerFunc, funcsBetweenExec, callWeighting, timingScript) -print "All done!" +print("All done!") diff --git a/test/BugPoint/compile-custom.ll.py b/test/BugPoint/compile-custom.ll.py index 4b9b30caadc..b0062ac0b74 100755 --- a/test/BugPoint/compile-custom.ll.py +++ b/test/BugPoint/compile-custom.ll.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from __future__ import print_function + import sys # Currently any print-out from the custom tool is interpreted as a crash diff --git a/test/CodeGen/NVPTX/ld-st-addrrspace.py b/test/CodeGen/NVPTX/ld-st-addrrspace.py index c9440666d99..7c28620cec4 100644 --- a/test/CodeGen/NVPTX/ld-st-addrrspace.py +++ b/test/CodeGen/NVPTX/ld-st-addrrspace.py @@ -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=nvptx -mcpu=sm_30 | FileCheck -check-prefixes=CHECK,CHECK_P32 %t.ll +from __future__ import print_function + from itertools import product from string import Template diff --git a/test/CodeGen/NVPTX/wmma.py b/test/CodeGen/NVPTX/wmma.py index bec5a274e02..14bbfd7df09 100644 --- a/test/CodeGen/NVPTX/wmma.py +++ b/test/CodeGen/NVPTX/wmma.py @@ -4,6 +4,8 @@ # RUN: python %s > %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 string import Template diff --git a/test/CodeGen/SystemZ/Large/branch-range-01.py b/test/CodeGen/SystemZ/Large/branch-range-01.py index 344d26121af..e66042dfa5d 100644 --- a/test/CodeGen/SystemZ/Large/branch-range-01.py +++ b/test/CodeGen/SystemZ/Large/branch-range-01.py @@ -67,42 +67,44 @@ # CHECK: c %r4, 136(%r3) # CHECK: jge [[LABEL]] +from __future__ import print_function + branch_blocks = 10 main_size = 0xffd8 -print '@global = global i32 0' +print('@global = global i32 0') -print 'define void @f1(i8 *%base, i32 *%stop, i32 %limit) {' -print 'entry:' -print ' br label %before0' -print '' +print('define void @f1(i8 *%base, i32 *%stop, i32 %limit) {') +print('entry:') +print(' br label %before0') +print('') for i in xrange(branch_blocks): next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main' - print 'before%d:' % i - print ' %%bstop%d = getelementptr i32, i32 *%%stop, i64 %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 ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next) - print '' + print('before%d:' % i) + print(' %%bstop%d = getelementptr i32, i32 *%%stop, i64 %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(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)) + print('') -print '%s:' % next +print('%s:' % next) a, b = 1, 1 for i in xrange(0, main_size, 6): a, b = b, a + b offset = 4096 + b % 500000 value = a % 256 - print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset) - print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i) + print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)) + print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i)) for i in xrange(branch_blocks): - print ' %%astop%d = getelementptr i32, i32 *%%stop, i64 %d' % (i, i + 25) - print ' %%acur%d = load i32 , i32 *%%astop%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 '' - print 'after%d:' % i + print(' %%astop%d = getelementptr i32, i32 *%%stop, i64 %d' % (i, i + 25)) + print(' %%acur%d = load i32 , i32 *%%astop%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('') + print('after%d:' % i) -print ' %dummy = load volatile i32, i32 *@global' -print ' ret void' -print '}' +print(' %dummy = load volatile i32, i32 *@global') +print(' ret void') +print('}') diff --git a/test/CodeGen/SystemZ/Large/branch-range-02.py b/test/CodeGen/SystemZ/Large/branch-range-02.py index 7f7b09954a6..4566d9746e8 100644 --- a/test/CodeGen/SystemZ/Large/branch-range-02.py +++ b/test/CodeGen/SystemZ/Large/branch-range-02.py @@ -56,12 +56,14 @@ # CHECK: c %r4, 1036(%r3) # CHECK: jge [[LABEL]] +from __future__ import print_function + blocks = 256 + 4 -print 'define void @f1(i8 *%base, i32 *%stop, i32 %limit) {' -print 'entry:' -print ' br label %b0' -print '' +print('define void @f1(i8 *%base, i32 *%stop, i32 %limit) {') +print('entry:') +print(' br label %b0') +print('') a, b = 1, 1 for i in xrange(blocks): @@ -69,14 +71,14 @@ for i in xrange(blocks): value = a % 256 next = 'b%d' % (i + 1) if i + 1 < blocks else 'end' other = 'end' if 2 * i < blocks else 'b0' - print 'b%d:' % i - print ' store volatile i8 %d, i8 *%%base' % value - print ' %%astop%d = getelementptr i32, i32 *%%stop, i64 %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 ' br i1 %%atest%d, label %%%s, label %%%s' % (i, other, next) + print('b%d:' % i) + print(' store volatile i8 %d, i8 *%%base' % value) + print(' %%astop%d = getelementptr i32, i32 *%%stop, i64 %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(' br i1 %%atest%d, label %%%s, label %%%s' % (i, other, next)) -print '' -print '%s:' % next -print ' ret void' -print '}' +print('') +print('%s:' % next) +print(' ret void') +print('}') diff --git a/test/CodeGen/SystemZ/Large/branch-range-03.py b/test/CodeGen/SystemZ/Large/branch-range-03.py index 75c9ea4a051..16fcbe77f34 100644 --- a/test/CodeGen/SystemZ/Large/branch-range-03.py +++ b/test/CodeGen/SystemZ/Large/branch-range-03.py @@ -67,44 +67,46 @@ # CHECK: cr %r4, [[REG]] # CHECK: jge [[LABEL]] +from __future__ import print_function + branch_blocks = 8 main_size = 0xffcc -print '@global = global i32 0' +print('@global = global i32 0') -print 'define void @f1(i8 *%base, i8 *%stop, i32 %limit) {' -print 'entry:' -print ' br label %before0' -print '' +print('define void @f1(i8 *%base, i8 *%stop, i32 %limit) {') +print('entry:') +print(' br label %before0') +print('') for i in xrange(branch_blocks): next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main' - print 'before%d:' % i - print ' %%bstop%d = getelementptr i8, i8 *%%stop, i64 %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 ' %%btest%d = icmp eq i32 %%limit, %%bext%d' % (i, i) - print ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next) - print '' + print('before%d:' % i) + print(' %%bstop%d = getelementptr i8, i8 *%%stop, i64 %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(' %%btest%d = icmp eq i32 %%limit, %%bext%d' % (i, i)) + print(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)) + print('') -print '%s:' % next +print('%s:' % next) a, b = 1, 1 for i in xrange(0, main_size, 6): a, b = b, a + b offset = 4096 + b % 500000 value = a % 256 - print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset) - print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i) + print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)) + print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i)) for i in xrange(branch_blocks): - print ' %%astop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i + 25) - print ' %%acur%d = load i8 , i8 *%%astop%d' % (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 ' br i1 %%atest%d, label %%main, label %%after%d' % (i, i) - print '' - print 'after%d:' % i + print(' %%astop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i + 25)) + print(' %%acur%d = load i8 , i8 *%%astop%d' % (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(' br i1 %%atest%d, label %%main, label %%after%d' % (i, i)) + print('') + print('after%d:' % i) -print ' %dummy = load volatile i32, i32 *@global' -print ' ret void' -print '}' +print(' %dummy = load volatile i32, i32 *@global') +print(' ret void') +print('}') diff --git a/test/CodeGen/SystemZ/Large/branch-range-04.py b/test/CodeGen/SystemZ/Large/branch-range-04.py index d475c9565e4..2b22f75147a 100644 --- a/test/CodeGen/SystemZ/Large/branch-range-04.py +++ b/test/CodeGen/SystemZ/Large/branch-range-04.py @@ -71,44 +71,46 @@ # CHECK: cgr %r4, [[REG]] # CHECK: jge [[LABEL]] +from __future__ import print_function + branch_blocks = 8 main_size = 0xffcc -print '@global = global i32 0' +print('@global = global i32 0') -print 'define void @f1(i8 *%base, i8 *%stop, i64 %limit) {' -print 'entry:' -print ' br label %before0' -print '' +print('define void @f1(i8 *%base, i8 *%stop, i64 %limit) {') +print('entry:') +print(' br label %before0') +print('') for i in xrange(branch_blocks): next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main' - print 'before%d:' % i - print ' %%bstop%d = getelementptr i8, i8 *%%stop, i64 %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 ' %%btest%d = icmp eq i64 %%limit, %%bext%d' % (i, i) - print ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next) - print '' + print('before%d:' % i) + print(' %%bstop%d = getelementptr i8, i8 *%%stop, i64 %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(' %%btest%d = icmp eq i64 %%limit, %%bext%d' % (i, i)) + print(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)) + print('') -print '%s:' % next +print('%s:' % next) a, b = 1, 1 for i in xrange(0, main_size, 6): a, b = b, a + b offset = 4096 + b % 500000 value = a % 256 - print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset) - print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i) + print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)) + print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i)) for i in xrange(branch_blocks): - print ' %%astop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i + 25) - print ' %%acur%d = load i8 , i8 *%%astop%d' % (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 ' br i1 %%atest%d, label %%main, label %%after%d' % (i, i) - print '' - print 'after%d:' % i + print(' %%astop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i + 25)) + print(' %%acur%d = load i8 , i8 *%%astop%d' % (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(' br i1 %%atest%d, label %%main, label %%after%d' % (i, i)) + print('') + print('after%d:' % i) -print ' %dummy = load volatile i32, i32 *@global' -print ' ret void' -print '}' +print(' %dummy = load volatile i32, i32 *@global') +print(' ret void') +print('}') diff --git a/test/CodeGen/SystemZ/Large/branch-range-05.py b/test/CodeGen/SystemZ/Large/branch-range-05.py index 0a56eff85e1..8f85a320704 100644 --- a/test/CodeGen/SystemZ/Large/branch-range-05.py +++ b/test/CodeGen/SystemZ/Large/branch-range-05.py @@ -71,42 +71,44 @@ # CHECK: chi [[REG]], 107 # CHECK: jgl [[LABEL]] +from __future__ import print_function + branch_blocks = 8 main_size = 0xffcc -print '@global = global i32 0' +print('@global = global i32 0') -print 'define void @f1(i8 *%base, i8 *%stop) {' -print 'entry:' -print ' br label %before0' -print '' +print('define void @f1(i8 *%base, i8 *%stop) {') +print('entry:') +print(' br label %before0') +print('') for i in xrange(branch_blocks): next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main' - print 'before%d:' % i - print ' %%bcur%d = load i8 , i8 *%%stop' % 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 ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next) - print '' + print('before%d:' % i) + print(' %%bcur%d = load i8 , i8 *%%stop' % 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(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)) + print('') -print '%s:' % next +print('%s:' % next) a, b = 1, 1 for i in xrange(0, main_size, 6): a, b = b, a + b offset = 4096 + b % 500000 value = a % 256 - print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset) - print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i) + print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)) + print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i)) for i in xrange(branch_blocks): - print ' %%acur%d = load i8 , i8 *%%stop' % 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 ' br i1 %%atest%d, label %%main, label %%after%d' % (i, i) - print '' - print 'after%d:' % i + print(' %%acur%d = load i8 , i8 *%%stop' % 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(' br i1 %%atest%d, label %%main, label %%after%d' % (i, i)) + print('') + print('after%d:' % i) -print ' %dummy = load volatile i32, i32 *@global' -print ' ret void' -print '}' +print(' %dummy = load volatile i32, i32 *@global') +print(' ret void') +print('}') diff --git a/test/CodeGen/SystemZ/Large/branch-range-06.py b/test/CodeGen/SystemZ/Large/branch-range-06.py index 5b054345b08..7f1fce3e63b 100644 --- a/test/CodeGen/SystemZ/Large/branch-range-06.py +++ b/test/CodeGen/SystemZ/Large/branch-range-06.py @@ -71,42 +71,44 @@ # CHECK: cghi [[REG]], 107 # CHECK: jgl [[LABEL]] +from __future__ import print_function + branch_blocks = 8 main_size = 0xffcc -print '@global = global i32 0' +print('@global = global i32 0') -print 'define void @f1(i8 *%base, i8 *%stop) {' -print 'entry:' -print ' br label %before0' -print '' +print('define void @f1(i8 *%base, i8 *%stop) {') +print('entry:') +print(' br label %before0') +print('') for i in xrange(branch_blocks): next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main' - print 'before%d:' % i - print ' %%bcur%d = load i8 , i8 *%%stop' % 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 ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next) - print '' + print('before%d:' % i) + print(' %%bcur%d = load i8 , i8 *%%stop' % 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(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)) + print('') -print '%s:' % next +print('%s:' % next) a, b = 1, 1 for i in xrange(0, main_size, 6): a, b = b, a + b offset = 4096 + b % 500000 value = a % 256 - print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset) - print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i) + print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)) + print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i)) for i in xrange(branch_blocks): - print ' %%acur%d = load i8 , i8 *%%stop' % 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 ' br i1 %%atest%d, label %%main, label %%after%d' % (i, i) - print '' - print 'after%d:' % i + print(' %%acur%d = load i8 , i8 *%%stop' % 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(' br i1 %%atest%d, label %%main, label %%after%d' % (i, i)) + print('') + print('after%d:' % i) -print ' %dummy = load volatile i32, i32 *@global' -print ' ret void' -print '}' +print(' %dummy = load volatile i32, i32 *@global') +print(' ret void') +print('}') diff --git a/test/CodeGen/SystemZ/Large/branch-range-07.py b/test/CodeGen/SystemZ/Large/branch-range-07.py index c5fef10577f..03764c648ed 100644 --- a/test/CodeGen/SystemZ/Large/branch-range-07.py +++ b/test/CodeGen/SystemZ/Large/branch-range-07.py @@ -32,37 +32,39 @@ # CHECK: ahi {{%r[0-9]+}}, -1 # CHECK: jglh +from __future__ import print_function + branch_blocks = 8 main_size = 0xffd8 -print 'define void @f1(i8 *%base, i32 *%counts) {' -print 'entry:' +print('define void @f1(i8 *%base, i32 *%counts) {') +print('entry:') for i in xrange(branch_blocks - 1, -1, -1): - print ' %%countptr%d = getelementptr i32, i32 *%%counts, i64 %d' % (i, i) - print ' %%initcount%d = load i32 , i32 *%%countptr%d' % (i, i) - print ' br label %%loop%d' % i + print(' %%countptr%d = getelementptr i32, i32 *%%counts, i64 %d' % (i, i)) + print(' %%initcount%d = load i32 , i32 *%%countptr%d' % (i, 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) block2 = 'loop0' if i == 0 else 'after%d' % (i - 1) - print (' %%count%d = phi i32 [ %%initcount%d, %%%s ],' - ' [ %%nextcount%d, %%%s ]' % (i, i, block1, i, block2)) + print((' %%count%d = phi i32 [ %%initcount%d, %%%s ],' + ' [ %%nextcount%d, %%%s ]' % (i, i, block1, i, block2))) a, b = 1, 1 for i in xrange(0, main_size, 6): a, b = b, a + b offset = 4096 + b % 500000 value = a % 256 - print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset) - print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i) + print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)) + print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i)) for i in xrange(branch_blocks): - print ' %%nextcount%d = add i32 %%count%d, -1' % (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 '' - print 'after%d:' % i + print(' %%nextcount%d = add i32 %%count%d, -1' % (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('') + print('after%d:' % i) -print ' ret void' -print '}' +print(' ret void') +print('}') diff --git a/test/CodeGen/SystemZ/Large/branch-range-08.py b/test/CodeGen/SystemZ/Large/branch-range-08.py index 8b6b6739833..56e3901c2ac 100644 --- a/test/CodeGen/SystemZ/Large/branch-range-08.py +++ b/test/CodeGen/SystemZ/Large/branch-range-08.py @@ -33,37 +33,39 @@ # CHECK: aghi {{%r[0-9]+}}, -1 # CHECK: jglh +from __future__ import print_function + branch_blocks = 8 main_size = 0xffd8 -print 'define void @f1(i8 *%base, i64 *%counts) {' -print 'entry:' +print('define void @f1(i8 *%base, i64 *%counts) {') +print('entry:') for i in xrange(branch_blocks - 1, -1, -1): - print ' %%countptr%d = getelementptr i64, i64 *%%counts, i64 %d' % (i, i) - print ' %%initcount%d = load i64 , i64 *%%countptr%d' % (i, i) - print ' br label %%loop%d' % i + print(' %%countptr%d = getelementptr i64, i64 *%%counts, i64 %d' % (i, i)) + print(' %%initcount%d = load i64 , i64 *%%countptr%d' % (i, 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) block2 = 'loop0' if i == 0 else 'after%d' % (i - 1) - print (' %%count%d = phi i64 [ %%initcount%d, %%%s ],' - ' [ %%nextcount%d, %%%s ]' % (i, i, block1, i, block2)) + print((' %%count%d = phi i64 [ %%initcount%d, %%%s ],' + ' [ %%nextcount%d, %%%s ]' % (i, i, block1, i, block2))) a, b = 1, 1 for i in xrange(0, main_size, 6): a, b = b, a + b offset = 4096 + b % 500000 value = a % 256 - print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset) - print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i) + print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)) + print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i)) for i in xrange(branch_blocks): - print ' %%nextcount%d = add i64 %%count%d, -1' % (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 '' - print 'after%d:' % i + print(' %%nextcount%d = add i64 %%count%d, -1' % (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('') + print('after%d:' % i) -print ' ret void' -print '}' +print(' ret void') +print('}') diff --git a/test/CodeGen/SystemZ/Large/branch-range-09.py b/test/CodeGen/SystemZ/Large/branch-range-09.py index 6b568a6e640..40bfe31007f 100644 --- a/test/CodeGen/SystemZ/Large/branch-range-09.py +++ b/test/CodeGen/SystemZ/Large/branch-range-09.py @@ -67,44 +67,46 @@ # CHECK: clr %r4, [[REG]] # CHECK: jgl [[LABEL]] +from __future__ import print_function + branch_blocks = 8 main_size = 0xffcc -print '@global = global i32 0' +print('@global = global i32 0') -print 'define void @f1(i8 *%base, i8 *%stop, i32 %limit) {' -print 'entry:' -print ' br label %before0' -print '' +print('define void @f1(i8 *%base, i8 *%stop, i32 %limit) {') +print('entry:') +print(' br label %before0') +print('') for i in xrange(branch_blocks): next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main' - print 'before%d:' % i - print ' %%bstop%d = getelementptr i8, i8 *%%stop, i64 %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 ' %%btest%d = icmp ult i32 %%limit, %%bext%d' % (i, i) - print ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next) - print '' + print('before%d:' % i) + print(' %%bstop%d = getelementptr i8, i8 *%%stop, i64 %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(' %%btest%d = icmp ult i32 %%limit, %%bext%d' % (i, i)) + print(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)) + print('') -print '%s:' % next +print('%s:' % next) a, b = 1, 1 for i in xrange(0, main_size, 6): a, b = b, a + b offset = 4096 + b % 500000 value = a % 256 - print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset) - print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i) + print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)) + print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i)) for i in xrange(branch_blocks): - print ' %%astop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i + 25) - print ' %%acur%d = load i8 , i8 *%%astop%d' % (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 ' br i1 %%atest%d, label %%main, label %%after%d' % (i, i) - print '' - print 'after%d:' % i + print(' %%astop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i + 25)) + print(' %%acur%d = load i8 , i8 *%%astop%d' % (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(' br i1 %%atest%d, label %%main, label %%after%d' % (i, i)) + print('') + print('after%d:' % i) -print ' %dummy = load volatile i32, i32 *@global' -print ' ret void' -print '}' +print(' %dummy = load volatile i32, i32 *@global') +print(' ret void') +print('}') diff --git a/test/CodeGen/SystemZ/Large/branch-range-10.py b/test/CodeGen/SystemZ/Large/branch-range-10.py index c6f8945e294..0adcaa4a1fe 100644 --- a/test/CodeGen/SystemZ/Large/branch-range-10.py +++ b/test/CodeGen/SystemZ/Large/branch-range-10.py @@ -71,44 +71,46 @@ # CHECK: clgr %r4, [[REG]] # CHECK: jgl [[LABEL]] +from __future__ import print_function + branch_blocks = 8 main_size = 0xffcc -print '@global = global i32 0' +print('@global = global i32 0') -print 'define void @f1(i8 *%base, i8 *%stop, i64 %limit) {' -print 'entry:' -print ' br label %before0' -print '' +print('define void @f1(i8 *%base, i8 *%stop, i64 %limit) {') +print('entry:') +print(' br label %before0') +print('') for i in xrange(branch_blocks): next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main' - print 'before%d:' % i - print ' %%bstop%d = getelementptr i8, i8 *%%stop, i64 %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 ' %%btest%d = icmp ult i64 %%limit, %%bext%d' % (i, i) - print ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next) - print '' + print('before%d:' % i) + print(' %%bstop%d = getelementptr i8, i8 *%%stop, i64 %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(' %%btest%d = icmp ult i64 %%limit, %%bext%d' % (i, i)) + print(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)) + print('') -print '%s:' % next +print('%s:' % next) a, b = 1, 1 for i in xrange(0, main_size, 6): a, b = b, a + b offset = 4096 + b % 500000 value = a % 256 - print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset) - print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i) + print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)) + print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i)) for i in xrange(branch_blocks): - print ' %%astop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i + 25) - print ' %%acur%d = load i8 , i8 *%%astop%d' % (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 ' br i1 %%atest%d, label %%main, label %%after%d' % (i, i) - print '' - print 'after%d:' % i + print(' %%astop%d = getelementptr i8, i8 *%%stop, i64 %d' % (i, i + 25)) + print(' %%acur%d = load i8 , i8 *%%astop%d' % (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(' br i1 %%atest%d, label %%main, label %%after%d' % (i, i)) + print('') + print('after%d:' % i) -print ' %dummy = load volatile i32, i32 *@global' -print ' ret void' -print '}' +print(' %dummy = load volatile i32, i32 *@global') +print(' ret void') +print('}') diff --git a/test/CodeGen/SystemZ/Large/branch-range-11.py b/test/CodeGen/SystemZ/Large/branch-range-11.py index 10466df8baa..f553b351760 100644 --- a/test/CodeGen/SystemZ/Large/branch-range-11.py +++ b/test/CodeGen/SystemZ/Large/branch-range-11.py @@ -87,44 +87,46 @@ # CHECK: clfi [[REG]], 107 # CHECK: jgl [[LABEL]] +from __future__ import print_function + branch_blocks = 8 main_size = 0xffc6 -print '@global = global i32 0' +print('@global = global i32 0') -print 'define void @f1(i8 *%base, i32 *%stopa, i32 *%stopb) {' -print 'entry:' -print ' br label %before0' -print '' +print('define void @f1(i8 *%base, i32 *%stopa, i32 *%stopb) {') +print('entry:') +print(' br label %before0') +print('') for i in xrange(branch_blocks): next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main' - print 'before%d:' % i - print ' %%bcur%da = load i32 , i32 *%%stopa' % i - print ' %%bcur%db = load i32 , i32 *%%stopb' % 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 ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next) - print '' + print('before%d:' % i) + print(' %%bcur%da = load i32 , i32 *%%stopa' % i) + print(' %%bcur%db = load i32 , i32 *%%stopb' % 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(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)) + print('') -print '%s:' % next +print('%s:' % next) a, b = 1, 1 for i in xrange(0, main_size, 6): a, b = b, a + b offset = 4096 + b % 500000 value = a % 256 - print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset) - print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i) + print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)) + print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i)) for i in xrange(branch_blocks): - print ' %%acur%da = load i32 , i32 *%%stopa' % i - print ' %%acur%db = load i32 , i32 *%%stopb' % 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 ' br i1 %%atest%d, label %%main, label %%after%d' % (i, i) - print '' - print 'after%d:' % i + print(' %%acur%da = load i32 , i32 *%%stopa' % i) + print(' %%acur%db = load i32 , i32 *%%stopb' % 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(' br i1 %%atest%d, label %%main, label %%after%d' % (i, i)) + print('') + print('after%d:' % i) -print ' %dummy = load volatile i32, i32 *@global' -print ' ret void' -print '}' +print(' %dummy = load volatile i32, i32 *@global') +print(' ret void') +print('}') diff --git a/test/CodeGen/SystemZ/Large/branch-range-12.py b/test/CodeGen/SystemZ/Large/branch-range-12.py index 809483a9fcd..1cedc6d8467 100644 --- a/test/CodeGen/SystemZ/Large/branch-range-12.py +++ b/test/CodeGen/SystemZ/Large/branch-range-12.py @@ -87,44 +87,46 @@ # CHECK: clgfi [[REG]], 107 # CHECK: jgl [[LABEL]] +from __future__ import print_function + branch_blocks = 8 main_size = 0xffb4 -print '@global = global i32 0' +print('@global = global i32 0') -print 'define void @f1(i8 *%base, i64 *%stopa, i64 *%stopb) {' -print 'entry:' -print ' br label %before0' -print '' +print('define void @f1(i8 *%base, i64 *%stopa, i64 *%stopb) {') +print('entry:') +print(' br label %before0') +print('') for i in xrange(branch_blocks): next = 'before%d' % (i + 1) if i + 1 < branch_blocks else 'main' - print 'before%d:' % i - print ' %%bcur%da = load i64 , i64 *%%stopa' % i - print ' %%bcur%db = load i64 , i64 *%%stopb' % 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 ' br i1 %%btest%d, label %%after0, label %%%s' % (i, next) - print '' + print('before%d:' % i) + print(' %%bcur%da = load i64 , i64 *%%stopa' % i) + print(' %%bcur%db = load i64 , i64 *%%stopb' % 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(' br i1 %%btest%d, label %%after0, label %%%s' % (i, next)) + print('') -print '%s:' % next +print('%s:' % next) a, b = 1, 1 for i in xrange(0, main_size, 6): a, b = b, a + b offset = 4096 + b % 500000 value = a % 256 - print ' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset) - print ' store volatile i8 %d, i8 *%%ptr%d' % (value, i) + print(' %%ptr%d = getelementptr i8, i8 *%%base, i64 %d' % (i, offset)) + print(' store volatile i8 %d, i8 *%%ptr%d' % (value, i)) for i in xrange(branch_blocks): - print ' %%acur%da = load i64 , i64 *%%stopa' % i - print ' %%acur%db = load i64 , i64 *%%stopb' % 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 ' br i1 %%atest%d, label %%main, label %%after%d' % (i, i) - print '' - print 'after%d:' % i + print(' %%acur%da = load i64 , i64 *%%stopa' % i) + print(' %%acur%db = load i64 , i64 *%%stopb' % 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(' br i1 %%atest%d, label %%main, label %%after%d' % (i, i)) + print('') + print('after%d:' % i) -print ' %dummy = load volatile i32, i32 *@global' -print ' ret void' -print '}' +print(' %dummy = load volatile i32, i32 *@global') +print(' ret void') +print('}') diff --git a/test/CodeGen/SystemZ/Large/spill-01.py b/test/CodeGen/SystemZ/Large/spill-01.py index f59f607d5be..2831804df9e 100644 --- a/test/CodeGen/SystemZ/Large/spill-01.py +++ b/test/CodeGen/SystemZ/Large/spill-01.py @@ -18,23 +18,26 @@ # CHECK: lay [[REG:%r[0-5]]], 4096(%r15) # CHECK: mvc {{[0-9]+}}(8,{{%r[0-9]+}}), 8([[REG]]) # CHECK: br %r14 + +from __future__ import print_function + count = 500 -print 'declare void @foo()' -print '' -print 'define void @f1(i64 *%base0, i64 *%base1) {' +print('declare void @foo()') +print('') +print('define void @f1(i64 *%base0, i64 *%base1) {') for i in range(count): - 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 '' + 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('') -print ' call void @foo()' -print '' +print(' call void @foo()') +print('') 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 ' ret void' -print '}' +print('') +print(' ret void') +print('}') diff --git a/test/CodeGen/SystemZ/Large/spill-02.py b/test/CodeGen/SystemZ/Large/spill-02.py index 4ccfa11a0d3..f8359932efb 100644 --- a/test/CodeGen/SystemZ/Large/spill-02.py +++ b/test/CodeGen/SystemZ/Large/spill-02.py @@ -19,55 +19,58 @@ # 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 # which is used as a base pointer. + +from __future__ import print_function + args = (8168 - 160) / 8 + (5 - 1) -print 'declare i64 *@foo(i64 *%s)' % (', i64' * args) -print 'declare void @bar(i64 *)' -print '' -print 'define i64 @f1(i64 %foo) {' -print 'entry:' +print('declare i64 *@foo(i64 *%s)' % (', i64' * args)) +print('declare void @bar(i64 *)') +print('') +print('define i64 @f1(i64 %foo) {') +print('entry:') # Make the allocation big, so that it goes at the top of the frame. -print ' %array = alloca [1000 x i64]' -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 '' +print(' %array = alloca [1000 x i64]') +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('') # Make sure all GPRs are used. One is needed for the stack pointer and # another for %base, so we need 14 live values. count = 14 for i in range(count): - print ' %%ptr%d = getelementptr i64, i64 *%%base, i64 %d' % (i, i / 2) - print ' %%val%d = load volatile i64 , i64 *%%ptr%d' % (i, i) - print '' + print(' %%ptr%d = getelementptr i64, i64 *%%base, i64 %d' % (i, i / 2)) + print(' %%val%d = load volatile i64 , i64 *%%ptr%d' % (i, i)) + print('') # Encourage the register allocator to give preference to these %vals # by using them several times. for j in range(4): for i in range(count): - print ' store volatile i64 %%val%d, i64 *%%ptr%d' % (i, i) - print '' + print(' store volatile i64 %%val%d, i64 *%%ptr%d' % (i, i)) + print('') # 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 # block cannot be reordered with the surrounding code. -print ' %cond = icmp eq i64 %val0, %val1' -print ' br i1 %cond, label %skip, label %fallthru' -print '' -print 'fallthru:' -print ' store i64 %foo, i64 *%area' -print ' store volatile i64 %val0, i64 *%ptr0' -print ' br label %skip' -print '' -print 'skip:' +print(' %cond = icmp eq i64 %val0, %val1') +print(' br i1 %cond, label %skip, label %fallthru') +print('') +print('fallthru:') +print(' store i64 %foo, i64 *%area') +print(' store volatile i64 %val0, i64 *%ptr0') +print(' br label %skip') +print('') +print('skip:') # Use each %val a few more times to emphasise the point, and to make sure # that they are live across the store of %foo. for j in range(4): for i in range(count): - print ' store volatile i64 %%val%d, i64 *%%ptr%d' % (i, i) - print '' + print(' store volatile i64 %%val%d, i64 *%%ptr%d' % (i, i)) + print('') -print ' call void @bar(i64 *%area)' -print ' ret i64 0' -print '}' +print(' call void @bar(i64 *%area)') +print(' ret i64 0') +print('}') diff --git a/test/MC/COFF/bigobj.py b/test/MC/COFF/bigobj.py index 2d610738b9d..7908fb3364f 100644 --- a/test/MC/COFF/bigobj.py +++ b/test/MC/COFF/bigobj.py @@ -1,5 +1,7 @@ # 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 # more than 65279 sections. diff --git a/test/Other/opt-bisect-helper.py b/test/Other/opt-bisect-helper.py index d75950f11d8..d2ab4ce096f 100755 --- a/test/Other/opt-bisect-helper.py +++ b/test/Other/opt-bisect-helper.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from __future__ import print_function + import os import sys import argparse diff --git a/test/tools/llvm-readobj/Inputs/relocs.py b/test/tools/llvm-readobj/Inputs/relocs.py index 3d0cae567e5..208b430e845 100644 --- a/test/tools/llvm-readobj/Inputs/relocs.py +++ b/test/tools/llvm-readobj/Inputs/relocs.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from __future__ import print_function + # Generates ELF, COFF and MachO object files for different architectures # containing all relocations: # diff --git a/tools/sancov/coverage-report-server.py b/tools/sancov/coverage-report-server.py index a2e161d0de5..2fb70eecfcf 100755 --- a/tools/sancov/coverage-report-server.py +++ b/tools/sancov/coverage-report-server.py @@ -22,6 +22,8 @@ Other options: --host host_name - host name to bind server to (127.0.0.1) ''' +from __future__ import print_function + import argparse import http.server import json diff --git a/utils/DSAclean.py b/utils/DSAclean.py index 6c43357019e..789a825a067 100755 --- a/utils/DSAclean.py +++ b/utils/DSAclean.py @@ -8,10 +8,13 @@ #the comments #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.# + +from __future__ import print_function + import re import sys if( len(sys.argv) < 3 ): - print 'usage is: ./DSAclean ' + print('usage is: ./DSAclean ') sys.exit(1) #get a file object input = open(sys.argv[1], 'r') diff --git a/utils/DSAextract.py b/utils/DSAextract.py index 89dece1f333..258aac47e82 100644 --- a/utils/DSAextract.py +++ b/utils/DSAextract.py @@ -25,14 +25,16 @@ #currently the script prints the names it is searching for #to STDOUT, so you can check to see if they are what you intend +from __future__ import print_function + import re import string import sys if len(sys.argv) < 3: - print 'usage is ./DSAextract \ - [list of nodes to extract]' + print('usage is ./DSAextract \ + [list of nodes to extract]') #open the input file input = open(sys.argv[1], 'r') @@ -73,7 +75,7 @@ while buffer != '': #test code #print '\n' -print node_name_set +print(node_name_set) #print node_set diff --git a/utils/Reviewing/find_interesting_reviews.py b/utils/Reviewing/find_interesting_reviews.py index 5af462b54a9..a9ab3a3ec85 100644 --- a/utils/Reviewing/find_interesting_reviews.py +++ b/utils/Reviewing/find_interesting_reviews.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from __future__ import print_function + import argparse import email.mime.multipart import email.mime.text diff --git a/utils/Target/ARM/analyze-match-table.py b/utils/Target/ARM/analyze-match-table.py index aa952d40085..d4e158d9e1d 100644 --- a/utils/Target/ARM/analyze-match-table.py +++ b/utils/Target/ARM/analyze-match-table.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from __future__ import print_function + def analyze_match_table(path): # Extract the instruction table. data = open(path).read() @@ -37,10 +39,10 @@ def analyze_match_table(path): condcode_mnemonics = set(m for m in mnemonics if 'MCK_CondCode' in mnemonic_flags[m]) noncondcode_mnemonics = mnemonics - condcode_mnemonics - print ' || '.join('Mnemonic == "%s"' % m - for m in ccout_mnemonics) - print ' || '.join('Mnemonic == "%s"' % m - for m in noncondcode_mnemonics) + print(' || '.join('Mnemonic == "%s"' % m + for m in ccout_mnemonics)) + print(' || '.join('Mnemonic == "%s"' % m + for m in noncondcode_mnemonics)) def main(): import sys diff --git a/utils/create_ladder_graph.py b/utils/create_ladder_graph.py index d29e3ad3a10..ebe0179d6df 100644 --- a/utils/create_ladder_graph.py +++ b/utils/create_ladder_graph.py @@ -10,6 +10,8 @@ One good use of this program is to test whether your linear time algorithm is really behaving linearly. """ +from __future__ import print_function + import argparse def main(): parser = argparse.ArgumentParser(description=__doc__) @@ -17,27 +19,27 @@ def main(): help="Number of ladder rungs. Must be a multiple of 2") args = parser.parse_args() if (args.rungs % 2) != 0: - print "Rungs must be a multiple of 2" + print("Rungs must be a multiple of 2") 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) rung2 = xrange(1, args.rungs, 2) for i in rung1: - print "rung1%d:" % i - print "*foo = x++;" + print("rung1%d:" % i) + print("*foo = x++;") if i != rung1[-1]: - print "if (*bar) goto rung1%d;" % (i+2) - print "else goto rung2%d;" % (i+1) + print("if (*bar) goto rung1%d;" % (i+2)) + print("else goto rung2%d;" % (i+1)) else: - print "goto rung2%d;" % (i+1) + print("goto rung2%d;" % (i+1)) for i in rung2: - print "rung2%d:" % i - print "*foo = x++;" + print("rung2%d:" % i) + print("*foo = x++;") if i != rung2[-1]: - print "goto rung2%d;" % (i+2) + print("goto rung2%d;" % (i+2)) else: - print "return *foo;" - print "}" + print("return *foo;") + print("}") if __name__ == '__main__': main() diff --git a/utils/demangle_tree.py b/utils/demangle_tree.py index 1185a233a41..00de72b2a18 100644 --- a/utils/demangle_tree.py +++ b/utils/demangle_tree.py @@ -4,6 +4,8 @@ # demanglings. Useful for stress testing the demangler against a large corpus # of inputs. +from __future__ import print_function + import argparse import functools import os diff --git a/utils/extract_vplan.py b/utils/extract_vplan.py index ac0055d2e79..b4e34fc76ba 100755 --- a/utils/extract_vplan.py +++ b/utils/extract_vplan.py @@ -4,6 +4,8 @@ # 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. +from __future__ import print_function + import sys import re import argparse diff --git a/utils/gdb-scripts/prettyprinters.py b/utils/gdb-scripts/prettyprinters.py index 918411db42f..bc669abc75c 100644 --- a/utils/gdb-scripts/prettyprinters.py +++ b/utils/gdb-scripts/prettyprinters.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import gdb.printing class Iterator: diff --git a/utils/indirect_calls.py b/utils/indirect_calls.py index b7349a6d884..e460ff7d083 100755 --- a/utils/indirect_calls.py +++ b/utils/indirect_calls.py @@ -10,6 +10,8 @@ dump format. """ +from __future__ import print_function + import os import sys import re @@ -32,8 +34,8 @@ def look_for_indirect(file): result = re.search('(call|jmp).*\*', line) if result != None: # TODO: Perhaps use cxxfilt to demangle functions? - print function - print line + print(function) + print(line) return def main(args): diff --git a/utils/lint/common_lint.py b/utils/lint/common_lint.py index e982680c052..aec907929b4 100644 --- a/utils/lint/common_lint.py +++ b/utils/lint/common_lint.py @@ -2,6 +2,7 @@ # # Common lint functions applicable to multiple types of files. +from __future__ import print_function import re def VerifyLineLength(filename, lines, max_length): @@ -89,7 +90,7 @@ def RunLintOverAllFiles(linter, filenames): for filename in filenames: file = open(filename, 'r') if not file: - print 'Cound not open %s' % filename + print('Cound not open %s' % filename) continue lines = file.readlines() lint.extend(linter.RunOnFile(filename, lines)) diff --git a/utils/lint/cpp_lint.py b/utils/lint/cpp_lint.py index 07fad5840fd..2fb8cc93c19 100755 --- a/utils/lint/cpp_lint.py +++ b/utils/lint/cpp_lint.py @@ -6,6 +6,7 @@ # TODO: add unittests for the verifier functions: # http://docs.python.org/library/unittest.html . +from __future__ import print_function import common_lint import re import sys @@ -86,7 +87,7 @@ class CppLint(common_lint.BaseLint): def CppLintMain(filenames): all_lint = common_lint.RunLintOverAllFiles(CppLint(), filenames) 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 diff --git a/utils/lit/lit/util.py b/utils/lit/lit/util.py index e20c4ab9015..4c116b3d913 100644 --- a/utils/lit/lit/util.py +++ b/utils/lit/lit/util.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import errno import itertools import math diff --git a/utils/lit/tests/Inputs/shtest-env/print_environment.py b/utils/lit/tests/Inputs/shtest-env/print_environment.py index 1add4079d58..ac9a80e6d50 100644 --- a/utils/lit/tests/Inputs/shtest-env/print_environment.py +++ b/utils/lit/tests/Inputs/shtest-env/print_environment.py @@ -1,8 +1,9 @@ #!/usr/bin/env python +from __future__ import print_statement import os sorted_environment = sorted(os.environ.items()) for name,value in sorted_environment: - print name,'=',value + print(name,'=',value) diff --git a/utils/lit/tests/Inputs/shtest-shell/check_path.py b/utils/lit/tests/Inputs/shtest-shell/check_path.py index c1d279700de..467505b7f29 100644 --- a/utils/lit/tests/Inputs/shtest-shell/check_path.py +++ b/utils/lit/tests/Inputs/shtest-shell/check_path.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from __future__ import print_function + import os import sys diff --git a/utils/llvm-build/llvmbuild/componentinfo.py b/utils/llvm-build/llvmbuild/componentinfo.py index b384acd190f..0e9d08915fb 100644 --- a/utils/llvm-build/llvmbuild/componentinfo.py +++ b/utils/llvm-build/llvmbuild/componentinfo.py @@ -2,7 +2,7 @@ Descriptor objects for entities that are part of the LLVM project. """ -from __future__ import absolute_import +from __future__ import absolute_import, print_function try: import configparser except: @@ -461,8 +461,8 @@ def _read_components_from_parser(parser, path, subpath): info = type_class.parse(subpath, IniFormatParser(parser.items(section))) except TypeError: - print >>sys.stderr, "error: invalid component %r in %r: %s" % ( - section, path, "unable to instantiate: %r" % type_name) + print("error: invalid component %r in %r: %s" % ( + section, path, "unable to instantiate: %r" % type_name), file=sys.stderr) import traceback traceback.print_exc() raise SystemExit(1) diff --git a/utils/llvm-gisel-cov.py b/utils/llvm-gisel-cov.py index a74ed10f864..820fceab0d0 100644 --- a/utils/llvm-gisel-cov.py +++ b/utils/llvm-gisel-cov.py @@ -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 on whether --num-rules has been used to specify the total number of rules. """ +from __future__ import print_function import argparse import struct @@ -59,9 +60,9 @@ def main(): num_rules = dict(args.num_rules) for backend, rules_for_backend in covered_rules.items(): 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: - print "%s: %d rules covered" % (backend, len(rules_for_backend.keys())) + print("%s: %d rules covered" % (backend, len(rules_for_backend))) if __name__ == '__main__': main() diff --git a/utils/release/findRegressions-nightly.py b/utils/release/findRegressions-nightly.py index ddf89835e2c..7654667f8fa 100755 --- a/utils/release/findRegressions-nightly.py +++ b/utils/release/findRegressions-nightly.py @@ -1,4 +1,6 @@ #!/usr/bin/env python +from __future__ import print_function + import re, string, sys, os, time DEBUG = 0 @@ -22,12 +24,12 @@ def parse(file): fname = '' for t in r: if DEBUG: - print t + print(t) if t[0] == 'PASS' or t[0] == 'FAIL' : tmp = t[2].split(testDirName) if DEBUG: - print tmp + print(tmp) if len(tmp) == 2: fname = tmp[1].strip('\r\n') @@ -41,26 +43,26 @@ def parse(file): test[fname][k] = 'NA' test[fname][t[1]] = t[0] if DEBUG: - print test[fname][t[1]] + print(test[fname][t[1]]) else : try: n = t[0].split('RESULT-')[1] if DEBUG: - print n; + print(n); if n == 'llc' or n == 'jit-comptime' or n == 'compile': test[fname][tp + n] = float(t[2].split(' ')[2]) if DEBUG: - print test[fname][tp + n] + print(test[fname][tp + n]) elif n.endswith('-time') : test[fname][exp + n] = float(t[2].strip('\r\n')) if DEBUG: - print test[fname][exp + n] + print(test[fname][exp + n]) else : - print "ERROR!" + print("ERROR!") sys.exit(1) except: @@ -73,7 +75,7 @@ def diffResults(d_old, d_new): for t in sorted(d_old.keys()) : if DEBUG: - print t + print(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_old[t][x] == 'PASS': if d_new[t][x] != 'PASS': - print t + " *** REGRESSION (" + x + ")\n" + print(t + " *** REGRESSION (" + x + ")\n") else: if d_new[t][x] == 'PASS': - print t + " * NEW PASS (" + x + ")\n" + print(t + " * NEW PASS (" + x + ")\n") else : - print t + "*** REGRESSION (" + x + ")\n" + print(t + "*** REGRESSION (" + x + ")\n") # For execution time, if there is no result, its a fail. for x in exectime: if d_old[t].has_key(tp + x): if not d_new[t].has_key(tp + x): - print t + " *** REGRESSION (" + tp + x + ")\n" + print(t + " *** REGRESSION (" + tp + x + ")\n") else : 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: if d_old[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 : if d_new[t].has_key(exp + x): - print t + " * NEW PASS (" + exp + x + ")\n" + print(t + " * NEW PASS (" + exp + x + ")\n") else : - print t + ": Removed from test-suite.\n" + print(t + ": Removed from test-suite.\n") #Main if len(sys.argv) < 3 : - print 'Usage:', sys.argv[0], \ - ' ' + print('Usage:', sys.argv[0], \ + ' ') sys.exit(-1) d_old = parse(sys.argv[1]) diff --git a/utils/release/findRegressions-simple.py b/utils/release/findRegressions-simple.py index 8d3b4cfca29..2f3b66cab90 100755 --- a/utils/release/findRegressions-simple.py +++ b/utils/release/findRegressions-simple.py @@ -1,4 +1,6 @@ #!/usr/bin/env python + +from __future__ import print_function import re, string, sys, os, time, math DEBUG = 0 @@ -18,13 +20,13 @@ def parse(file): fname = '' for t in r: if DEBUG: - print t + print(t) if t[0] == 'PASS' or t[0] == 'FAIL' : tmp = t[2].split('llvm-test/') if DEBUG: - print tmp + print(tmp) if len(tmp) == 2: fname = tmp[1].strip('\r\n') @@ -41,7 +43,7 @@ def parse(file): n = t[0].split('RESULT-')[1] if DEBUG: - print "n == ", n; + print("n == ", n); if n == 'compile-success': test[fname]['compile time'] = float(t[2].split('program')[1].strip('\r\n')) @@ -49,7 +51,7 @@ def parse(file): elif n == 'exec-success': test[fname]['exec time'] = float(t[2].split('program')[1].strip('\r\n')) if DEBUG: - print test[fname][string.replace(n, '-success', '')] + print(test[fname][string.replace(n, '-success', '')]) else : # print "ERROR!" @@ -120,36 +122,36 @@ def diffResults(d_old, d_new): removed += t + "\n" if len(regressions['compile state']) != 0: - print 'REGRESSION: Compilation Failed' - print regressions['compile state'] + print('REGRESSION: Compilation Failed') + print(regressions['compile state']) if len(regressions['exec state']) != 0: - print 'REGRESSION: Execution Failed' - print regressions['exec state'] + print('REGRESSION: Execution Failed') + print(regressions['exec state']) if len(regressions['compile time']) != 0: - print 'REGRESSION: Compilation Time' - print regressions['compile time'] + print('REGRESSION: Compilation Time') + print(regressions['compile time']) if len(regressions['exec time']) != 0: - print 'REGRESSION: Execution Time' - print regressions['exec time'] + print('REGRESSION: Execution Time') + print(regressions['exec time']) if len(passes['compile state']) != 0: - print 'NEW PASSES: Compilation' - print passes['compile state'] + print('NEW PASSES: Compilation') + print(passes['compile state']) if len(passes['exec state']) != 0: - print 'NEW PASSES: Execution' - print passes['exec state'] + print('NEW PASSES: Execution') + print(passes['exec state']) if len(removed) != 0: - print 'REMOVED TESTS' - print removed + print('REMOVED TESTS') + print(removed) # Main if len(sys.argv) < 3 : - print 'Usage:', sys.argv[0], ' ' + print('Usage:', sys.argv[0], ' ') sys.exit(-1) d_old = parse(sys.argv[1]) diff --git a/utils/shuffle_fuzz.py b/utils/shuffle_fuzz.py index eac34422b3f..c846411818d 100755 --- a/utils/shuffle_fuzz.py +++ b/utils/shuffle_fuzz.py @@ -13,6 +13,8 @@ set of transforms you want to test, and run the program. If it crashes, it found a bug. """ +from __future__ import print_function + import argparse import itertools import random @@ -109,13 +111,13 @@ def main(): if args.verbose: # Print out the shuffle sequence in a compact form. - print >>sys.stderr, ('Testing shuffle sequence "%s" (v%d%s):' % - (args.seed, width, element_type)) + print(('Testing shuffle sequence "%s" (v%d%s):' % + (args.seed, width, element_type)), file=sys.stderr) 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): - print >>sys.stderr, ' shuffle %d: %s' % (j, s) - print >>sys.stderr, '' + print(' shuffle %d: %s' % (j, s), file=sys.stderr) + print('', file=sys.stderr) # Symbolically evaluate the shuffle tree. inputs = [[int(j % element_modulus) @@ -128,15 +130,15 @@ def main(): for j in s] for i, s in enumerate(shuffles)] if len(results) != 1: - print >>sys.stderr, 'ERROR: Bad results: %s' % (results,) + print('ERROR: Bad results: %s' % (results,), file=sys.stderr) sys.exit(1) result = results[0] if args.verbose: - print >>sys.stderr, 'Which transforms:' - print >>sys.stderr, ' from: %s' % (inputs,) - print >>sys.stderr, ' into: %s' % (result,) - print >>sys.stderr, '' + print('Which transforms:', file=sys.stderr) + print(' from: %s' % (inputs,), file=sys.stderr) + print(' into: %s' % (result,), file=sys.stderr) + print('', file=sys.stderr) # The IR uses silly names for floating point types. We also need a same-size # integer type. @@ -150,25 +152,25 @@ def main(): # Now we need to generate IR for the shuffle function. 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 { entry:""" % dict(subst, arguments=', '.join( ['<%(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 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> """.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') - for si in s])) + for si in s]))) - print """ + print(""" 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. 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' % {'seed': args.seed, 'lane': i, 'result': r}) 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" -""".strip() % {'i': i, 's': s} +""".strip() % {'i': i, 's': s}) # Define a wrapper function which is marked 'optnone' to prevent # interprocedural optimizations from deleting the test. - print """ + print(""" 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) ret <%(N)d x %(T)s> %%result } """ % dict(subst, 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 # incorrectly (in an observable way). - print """ + print(""" define i32 @main() { entry: ; 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>)' % dict(subst, input=', '.join(['%(IT)s %(i)d' % dict(subst, i=i) for i in input]))) - for input in inputs])) + for input in inputs]))) # Test that each non-undef result lane contains the expected value. for i, r in enumerate(result): if r == -1: - print """ + print(""" test.%(i)d: ; Skip this lane, its value is undef. br label %%test.%(next_i)d -""" % dict(subst, i=i, next_i=i + 1) +""" % dict(subst, i=i, next_i=i + 1)) else: - print """ + print(""" test.%(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 @@ -238,9 +240,9 @@ die.%(i)d: call i32 @write(i32 2, i8* %%str.ptr, i32 %%length.%(i)d) call void @llvm.trap() 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: ret i32 0 } @@ -249,7 +251,7 @@ declare i32 @strlen(i8*) declare i32 @write(i32, i8*, i32) declare i32 @sprintf(i8*, i8*, ...) declare void @llvm.trap() noreturn nounwind -""" % (len(result),) +""" % (len(result),)) if __name__ == '__main__': main() diff --git a/utils/shuffle_select_fuzz_tester.py b/utils/shuffle_select_fuzz_tester.py index 88d8d75f7b9..6b2f94a6935 100644 --- a/utils/shuffle_select_fuzz_tester.py +++ b/utils/shuffle_select_fuzz_tester.py @@ -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 a bug (an error message with the expected and actual result is printed). """ +from __future__ import print_function import random import uuid @@ -145,7 +146,7 @@ class ShufInstr(Instruction): def calc_value(self): 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) result = [] @@ -179,7 +180,7 @@ class SelectInstr(Instruction): def calc_value(self): 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) result = [] @@ -343,7 +344,7 @@ def main(): help='Choose specific number of vector elements to be tested. (default: random)') 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.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. insts_str = ''.join([inst.dump() for inst in insts]) - print test_template.format(ty = ty.dump(), inputs = inputs_str, - instructions = insts_str, last_name = res.name) + print(test_template.format(ty = ty.dump(), inputs = inputs_str, + instructions = insts_str, last_name = res.name)) # Print the error message templates as global strings for i in range(len(res.value)): pad = ''.join(['\\00']*(31 - len(str(i)) - len(str(res.value[i])))) - print error_template.format(lane = str(i), exp = str(res.value[i]), - padding = pad) + print(error_template.format(lane = str(i), exp = str(res.value[i]), + padding = pad)) # Prepare the runtime checks and failure handlers. 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 = ', '.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__': diff --git a/utils/unicode-case-fold.py b/utils/unicode-case-fold.py index 98c56839c6c..2efa9045074 100755 --- a/utils/unicode-case-fold.py +++ b/utils/unicode-case-fold.py @@ -17,6 +17,8 @@ Right now this generates a function which implements simple case folding (C+S entries). """ +from __future__ import print_function + import sys import re import urllib2 @@ -116,22 +118,22 @@ f.close() dump_block(current_block) -print '//===---------- Support/UnicodeCaseFold.cpp -------------------------------===//' -print '//' -print '// This file was generated by utils/unicode-case-fold.py from the Unicode' -print '// case folding database at' -print '// ', sys.argv[1] -print '//' -print '// To regenerate this file, run:' -print '// utils/unicode-case-fold.py \\' -print '// "{}" \\'.format(sys.argv[1]) -print '// > lib/Support/UnicodeCaseFold.cpp' -print '//' -print '//===----------------------------------------------------------------------===//' -print '' -print '#include "llvm/Support/Unicode.h"' -print '' -print "int llvm::sys::unicode::foldCharSimple(int C) {" -print body -print " return C;" -print "}" +print('//===---------- Support/UnicodeCaseFold.cpp -------------------------------===//') +print('//') +print('// This file was generated by utils/unicode-case-fold.py from the Unicode') +print('// case folding database at') +print('// ', sys.argv[1]) +print('//') +print('// To regenerate this file, run:') +print('// utils/unicode-case-fold.py \\') +print('// "{}" \\'.format(sys.argv[1])) +print('// > lib/Support/UnicodeCaseFold.cpp') +print('//') +print('//===----------------------------------------------------------------------===//') +print('') +print('#include "llvm/Support/Unicode.h"') +print('') +print("int llvm::sys::unicode::foldCharSimple(int C) {") +print(body) +print(" return C;") +print("}") diff --git a/utils/update_analyze_test_checks.py b/utils/update_analyze_test_checks.py index b9175ae7327..0463bc01982 100755 --- a/utils/update_analyze_test_checks.py +++ b/utils/update_analyze_test_checks.py @@ -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! """ +from __future__ import print_function + import argparse import itertools 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) 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) for test in args.tests: 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: input_lines = [l.rstrip() for l in f] @@ -85,20 +87,20 @@ def main(): run_lines.append(l) 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: - print >>sys.stderr, ' RUN: ' + l + print(' RUN: ' + l, file=sys.stderr) prefix_list = [] for l in run_lines: (tool_cmd, filecheck_cmd) = tuple([cmd.strip() for cmd in l.split('|', 1)]) 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 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 tool_cmd_args = tool_cmd[len(opt_basename):].strip() @@ -119,8 +121,8 @@ def main(): func_dict.update({prefix: dict()}) for prefixes, opt_args in prefix_list: if args.verbose: - print >>sys.stderr, 'Extracted opt cmd: ' + opt_basename + ' ' + opt_args - print >>sys.stderr, 'Extracted FileCheck prefixes: ' + str(prefixes) + print('Extracted opt cmd: ' + opt_basename + ' ' + opt_args, file=sys.stderr) + print('Extracted FileCheck prefixes: ' + str(prefixes), file=sys.stderr) raw_tool_outputs = common.invoke_tool(args.opt_binary, opt_args, test) @@ -134,7 +136,7 @@ def main(): is_in_function_start = False prefix_set = set([prefix for prefixes, _ in prefix_list for prefix in prefixes]) 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.append(autogenerated_note) @@ -181,7 +183,7 @@ def main(): is_in_function = is_in_function_start = True 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: f.writelines([l + '\n' for l in output_lines]) diff --git a/utils/update_llc_test_checks.py b/utils/update_llc_test_checks.py index 09b49a763b6..d85fed56c18 100755 --- a/utils/update_llc_test_checks.py +++ b/utils/update_llc_test_checks.py @@ -7,6 +7,8 @@ FileCheck patterns. It can either update all of the tests in the file or a single test function. """ +from __future__ import print_function + import argparse import os # Used to advertise this file's name ("autogenerated_note"). import string @@ -42,7 +44,7 @@ def main(): for test in args.tests: 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: input_lines = [l.rstrip() for l in f] @@ -63,9 +65,9 @@ def main(): run_lines.append(l) 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: - print >>sys.stderr, ' RUN: ' + l + print(' RUN: ' + l, file=sys.stderr) run_list = [] for l in run_lines: @@ -81,11 +83,11 @@ def main(): if len(commands) > 1: filecheck_cmd = commands[1] 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 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 llc_cmd_args = llc_cmd[len('llc'):].strip() @@ -107,12 +109,12 @@ def main(): func_dict.update({prefix: dict()}) for prefixes, llc_args, triple_in_cmd in run_list: if args.verbose: - print >>sys.stderr, 'Extracted LLC cmd: llc ' + llc_args - print >>sys.stderr, 'Extracted FileCheck prefixes: ' + str(prefixes) + print('Extracted LLC cmd: llc ' + llc_args, file=sys.stderr) + print('Extracted FileCheck prefixes: ' + str(prefixes), file=sys.stderr) raw_tool_output = common.invoke_tool(args.llc_binary, llc_args, test) 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, triple_in_cmd or triple_in_ir or 'x86', prefixes, func_dict) @@ -122,7 +124,7 @@ def main(): func_name = None prefix_set = set([prefix for p in run_list for prefix in p[0]]) 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.append(autogenerated_note) @@ -167,7 +169,7 @@ def main(): is_in_function = is_in_function_start = True 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: f.writelines([l + '\n' for l in output_lines]) diff --git a/utils/update_test_checks.py b/utils/update_test_checks.py index 739fe045835..f878d478114 100755 --- a/utils/update_test_checks.py +++ b/utils/update_test_checks.py @@ -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! """ +from __future__ import print_function + import argparse import itertools 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) 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) for test in args.tests: 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: input_lines = [l.rstrip() for l in f] @@ -85,20 +87,20 @@ def main(): run_lines.append(l) 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: - print >>sys.stderr, ' RUN: ' + l + print(' RUN: ' + l, file=sys.stderr) prefix_list = [] for l in run_lines: (tool_cmd, filecheck_cmd) = tuple([cmd.strip() for cmd in l.split('|', 1)]) 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 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 tool_cmd_args = tool_cmd[len(opt_basename):].strip() @@ -119,8 +121,8 @@ def main(): func_dict.update({prefix: dict()}) for prefixes, opt_args in prefix_list: if args.verbose: - print >>sys.stderr, 'Extracted opt cmd: ' + opt_basename + ' ' + opt_args - print >>sys.stderr, 'Extracted FileCheck prefixes: ' + str(prefixes) + print('Extracted opt cmd: ' + opt_basename + ' ' + opt_args, file=sys.stderr) + print('Extracted FileCheck prefixes: ' + str(prefixes), file=sys.stderr) raw_tool_output = common.invoke_tool(args.opt_binary, opt_args, test) common.build_function_body_dictionary( @@ -131,7 +133,7 @@ def main(): is_in_function_start = False prefix_set = set([prefix for prefixes, _ in prefix_list for prefix in prefixes]) 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.append(autogenerated_note) @@ -178,7 +180,7 @@ def main(): is_in_function = is_in_function_start = True 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: f.writelines([l + '\n' for l in output_lines]) diff --git a/utils/wciia.py b/utils/wciia.py index eaa232f84af..4269db2de46 100755 --- a/utils/wciia.py +++ b/utils/wciia.py @@ -20,6 +20,7 @@ limitations: """ +from __future__ import print_function import os code_owners = {} @@ -97,7 +98,7 @@ def find_owners(fpath): import sys if len(sys.argv) < 2: - print "usage " + sys.argv[0] + " file_or_folder" + print("usage " + sys.argv[0] + " file_or_folder") exit(-1) # the path we are checking @@ -105,13 +106,13 @@ path = str(sys.argv[1]) # check if this is real path if not os.path.exists(path): - print "path (" + path + ") does not exist" + print("path (" + path + ") does not exist") exit(-1) owners_name = find_owners(path) # 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) @@ -119,7 +120,7 @@ exit(0) # not yet used root = "." for dir,subdirList,fileList in os.walk( root , topdown=False ) : - print "dir :" , dir + print("dir :" , dir) for fname in fileList : - print "-" , fname - print + print("-" , fname) + print()