view test/callback_suite/make-signatures.lua @ 457:90b1d927912a

- suite_aggrs: make sure random memory used doesn't ever result in NaN fp values (for every possible address), as this messes with result comparison
author Tassilo Philipp
date Fri, 28 Jan 2022 14:11:21 +0100
parents 3e629dc19168
children 45ac093ca822
line wrap: on
line source

require "config"
require "math"
require "string"

local nargtypes = string.len(argtypes)
local nrettypes = string.len(rettypes)
local argrange  = maxargs - minargs
math.randomseed(seed)

function randomSignatures(nsigs)
  local i 
  for i = 1, nsigs do
    local nargs = minargs + math.random(argrange+1) - 1 
    local signature = ""
    for j = 1, nargs do
      local typeindex = math.random(nargtypes)
      signature = signature .. string.sub(argtypes, typeindex, typeindex)
    end
    local rtypeindex = math.random(nrettypes)
    signature = signature .. ")" .. string.sub(rettypes, rtypeindex, rtypeindex)
    io.write(signature .. "\n")
  end
end

function orderedSignature(x)
  local signature = ""
  local typeindex
  while true do
    if x < nargtypes then break end
    typeindex = 1 + math.mod(x, nargtypes)
    signature = signature .. string.sub(argtypes, typeindex, typeindex)
    x = math.floor( x / nargtypes )
  end
  typeindex = 1 + x
  signature = signature .. ")" .. string.sub(argtypes, typeindex, typeindex)
  return signature
end

function orderedSignatures(nsigs)
  local i 
  for i = 1, nsigs do
    io.write( orderedSignature(offset+i*step) .. "\n" )
  end
end

function designedSignatures()
 for line in io.lines(designfile) do
   io.write( line )
   io.write( "\n" )
 end
end

if mode == "random" then
  randomSignatures(nsigs)
elseif mode == "ordered" then
  orderedSignatures(nsigs)
elseif mode == "designed" then
  designedSignatures()
else
  error("'mode' must be 'random' or 'ordered'")
end

io.flush()