ABITestGen: Add generation of vector types.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63024 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/utils/ABITest/ABITestGen.py b/utils/ABITest/ABITestGen.py
index c50abe1..957ce2b 100755
--- a/utils/ABITest/ABITestGen.py
+++ b/utils/ABITest/ABITestGen.py
@@ -181,14 +181,14 @@
yield '{ %s }'%(', '.join(elements))
elif isinstance(t, ComplexType):
for t in self.getTestValues(t.elementType):
- yield '%s + %si'%(t,t)
- elif isinstance(t, ArrayType) and not t.isVector:
+ yield '%s + %s * 1i'%(t,t)
+ elif isinstance(t, ArrayType):
values = list(self.getTestValues(t.elementType))
if not values:
yield '{ }'
- for i in range(t.size):
+ for i in range(t.numElements):
for v in values:
- elements = [random.choice(values) for i in range(t.size)]
+ elements = [random.choice(values) for i in range(t.numElements)]
elements[i] = v
yield '{ %s }'%(', '.join(elements))
else:
@@ -220,9 +220,11 @@
elif isinstance(t, ComplexType):
self.printValueOfType(prefix, '(__real %s)'%name, t.elementType, output=output,indent=indent)
self.printValueOfType(prefix, '(__imag %s)'%name, t.elementType, output=output,indent=indent)
- elif isinstance(t, ArrayType) and not t.isVector:
- for i in range(t.size):
- self.printValueOfType(prefix, '(%s)[%d]'%(name,i), t.elementType, output=output,indent=indent)
+ elif isinstance(t, ArrayType):
+ for i in range(t.numElements):
+ # Access in this fashion as a hackish way to portably
+ # access vectors.
+ self.printValueOfType(prefix, '((%s*) &%s)[%d]'%(t.elementType,name,i), t.elementType, output=output,indent=indent)
else:
raise NotImplementedError,'Cannot print value of type: "%s"'%(t,)
@@ -346,24 +348,28 @@
# Contruct type generator
builtins = []
ints = []
- if opts.useChar: ints.append('char')
- if opts.useShort: ints.append('short')
- if opts.useInt: ints.append('int')
- if opts.useLong: ints.append('long')
- if opts.useLongLong: ints.append('long long')
+ if opts.useChar: ints.append(('char',1))
+ if opts.useShort: ints.append(('short',2))
+ if opts.useInt: ints.append(('int',4))
+ # FIXME: Wrong size.
+ if opts.useLong: ints.append(('long',4))
+ if opts.useLongLong: ints.append(('long long',8))
if opts.useUnsigned:
- ints = (['unsigned %s'%i for i in ints] +
- ['signed %s'%i for i in ints])
+ ints = ([('unsigned %s'%i,s) for i,s in ints] +
+ [('signed %s'%i,s) for i,s in ints])
builtins.extend(ints)
- if opts.useBool: builtins.append('_Bool')
- if opts.useFloat: builtins.append('float')
- if opts.useDouble: builtins.append('double')
- if opts.useLongDouble: builtins.append('long double')
- if opts.useVoidPointer: builtins.append('void*')
+ if opts.useBool: builtins.append(('_Bool',1))
+ if opts.useFloat: builtins.append(('float',4))
+ if opts.useDouble: builtins.append(('double',8))
+ if opts.useLongDouble: builtins.append(('long double',16))
+ # FIXME: Wrong size.
+ if opts.useVoidPointer: builtins.append(('void*',4))
- btg = FixedTypeGenerator(map(BuiltinType,builtins))
- sbtg = FixedTypeGenerator(map(BuiltinType,['char','int','float']))
+ btg = FixedTypeGenerator([BuiltinType(n,s) for n,s in builtins])
+ sbtg = FixedTypeGenerator([BuiltinType('char',1),
+ BuiltinType('int',4),
+ BuiltinType('float',4)])
atg = AnyTypeGenerator()
artg = AnyTypeGenerator()