From 792202d090f08fbe4c567bb2a2c2fe634c57b4e0 Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Thu, 7 Aug 2014 04:49:54 +0000 Subject: [PATCH] Add an option to the shuffle fuzzer that lets you fuzz exclusively within a single bit-width of vectors. This is particularly useful for when you know you have bugs in a certain area and want to find simpler test cases than those produced by an open-ended fuzzing that ends up legalizing the vector in addition to shuffling it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215056 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/shuffle_fuzz.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/utils/shuffle_fuzz.py b/utils/shuffle_fuzz.py index f6a4408f5de..cd523f45c74 100755 --- a/utils/shuffle_fuzz.py +++ b/utils/shuffle_fuzz.py @@ -26,14 +26,28 @@ def main(): help='Show verbose output') parser.add_argument('--fixed-num-shuffles', type=int, help='Specify a fixed number of shuffles to test') + parser.add_argument('--fixed-bit-width', type=int, choices=[128, 256], + help='Specify a fixed bit width of vector to test') parser.add_argument('--triple', help='Specify a triple string to include in the IR') args = parser.parse_args() random.seed(args.seed) - width = random.choice([2, 4, 8, 16, 32, 64]) - element_type = random.choice(['i8', 'i16', 'i32', 'i64', 'f32', 'f64']) + if args.fixed_bit_width is not None: + if args.fixed_bit_width == 128: + (width, element_type) = random.choice( + [(2, 'i64'), (4, 'i32'), (8, 'i16'), (16, 'i8'), + (2, 'f64'), (4, 'f32')]) + elif args.fixed_bit_width == 256: + (width, element_type) = random.choice([ + (4, 'i64'), (8, 'i32'), (16, 'i16'), (32, 'i8'), + (4, 'f64'), (8, 'f32')]) + else: + sys.exit(1) # Checked above by argument parsing. + else: + width = random.choice([2, 4, 8, 16, 32, 64]) + element_type = random.choice(['i8', 'i16', 'i32', 'i64', 'f32', 'f64']) # FIXME: Support blends. shuffle_indices = [-1] + range(width)