8 Commits
Author SHA1 Message Date
Alex Wells 7baa2937b0 Odds and ends to enable BATCHED execution of most testsuite (#1453)
* Enable BATCHED execution of most testsuite entries that don't use closures or point cloud.

Added batched implementation of hash function.

Updated batched implementation to use the symbol.get_int(), symbol.get_float(), and symbol.get_string() methods vs. *(int*)symbol.data() approach.

Fixed bug in batched code gen where mangled symbol names were output as part of debug uninit warnings and range checking.

Signed-off-by: Alex M. Wells <alex.m.wells@intel.com>

* Fixed reparameter in batched execution.
Updated batched behavior for unlocked geom shader output parameters to function like scalar version.
Fixed batched bug when non-entry layers are executed and execution masks are compared producing a <i1x16> instead of i1 for use in conditional operation.

Added more reparameter test cases to cover arrays and arrays of aggregate types.

Signed-off-by: Alex M. Wells <alex.m.wells@intel.com>

* Enabled command line assignable user data for batched execution in testshade, which fixes testsuite/userdata-passthrough
Changed print_outputs for batched execution to not use << operator which includes parenthesis, but instead output each componenet with spaces to match the non-batched print_outputs.

renamed MaskedData<...>::assign_from(void* ptr_wide_data) to assign_val_from(const void* ptr_wide_data) to better reflect that only the value is assigned, and Dx and Dy are NOT assigned.
Added MaskedData<...>::assign_all_from(const void* ptr_data) to take a scalar DataT and broadcast it to all lanes of the MaskedData, masked off lanes are NOT overwritten, and value, Dx, Dy are assigned.

Signed-off-by: Alex M. Wells <alex.m.wells@intel.com>

* Apply clang-format to wide.h
Add some paranetheses to conditional to avoid warning.

Signed-off-by: Alex M. Wells <alex.m.wells@intel.com>

* Wrapped all printf arguments with pretty() in testsuite/geomath/test.osl to avoid small floating point differences from affecting printed results in test.

Signed-off-by: Alex M. Wells <alex.m.wells@intel.com>

* Add testsuite/geomath/ref/out-alt.txt to allow for minute floating point differences with some compiler/platform combinations.

Signed-off-by: Alex M. Wells <alex.m.wells@intel.com>
2022-01-13 15:38:43 -08:00
Larry Gritz 04d331e439 Transitioning repository to ASWF (#1329)
* Rename CLA files so they no longer say "draft."

* Change CONTRIBUTING.mv to correctly describe the new CLA process,
  remove language related to the old SPI CLAs. Also some touchups to
  README.md.

* Update the project_intake.md to check of various things that we've
  completed.

* Change all references to the old imageworks GitHub URLs to the new
  ASWF ones. (This touches comments at the start of basically every file.)

Signed-off-by: Larry Gritz <lg@larrygritz.com>
2021-01-25 09:44:09 -08:00
Larry Gritz ffc5303dcf Big copyright and license cleanup to follow ASWF conventions (#1145)
This brings us into conformance with ASWF standards for license text
and how the copyright notices read. (And was cleared by Sony and Linux
Foundation.) This is the same set of changes made to all the other
projects coming into the foundation, including OpenColorIO.

Please note that none of the licenses are changing -- it's the same
3-clause BSD license we have always used. Also, this doesn't change
any of the copyright holders -- it has always been the case that the
authors of each patch retain the copyright to their specific additions
or changes. OSL has never required copyright assignment for
contributions.

* Add a LICENSE-THIRD-PARTY.md file that documents imported software.

* Update documentation license to CC-BY-4.0 (from 3.0).

* Fully reproduce the Qt license in the two files derived from Qt
  example code.

* Change copyright notice to the new wording of 'Contributors to the
  Open Shading Language project', per ASWF convention.

* Replace lengthy per-file copyright boilerplate with SPDX short form.
  (This is more readable and is easily scanned by automated software to
  detect which licenses are used.)

* For any files lacking a copyright notice, license text, or SPDX
  identifier, add them.

* Fix test output for many unit tests where line numbers changed after
  license info was added to .osl files in the testsuite.
2020-04-16 16:55:29 -07:00
Larry Gritz 366e979681 More uniform path for python binary retrieval 2015-03-20 13:14:18 -07:00
Larry Gritz fc7b1a50b6 testsuite overhaul -- all temp files end up in build, runtest.py called directly and the run.py files shrink down to the bare minimum. Similar to the recent changes in OIIO testsuite. 2012-03-09 16:45:08 -08:00
Larry Gritz 20546178d8 testsuite: Eliminate all old SIMD-style output reference 2011-05-11 15:05:26 -07:00
Larry Gritz d1fb2e9b09 Merged revisions 638-668,672-678,680-687,690-726,728-730,733-744,746-747,749-753,755-784 via svnmerge from
https://openshadinglanguage.googlecode.com/svn/branches/TRY-llvm

........
  r638 | solomon.boulos | 2010-06-01 15:50:50 -0700 (Tue, 01 Jun 2010) | 20 lines
  
  Initial checkin of my llvm backend I've been working on over the past
  couple weeks.
  
  The meat of the code is in src/liboslexec/llvm_instance.cpp. This
  implements a basic OSL opcode -> LLVM IR translation of the scalar
  shader programs. This conversion happens after the runtimeoptimization
  passes already performed on the OSL opcodes. llvmshade is a pared down
  version of testshade that was useful for debugging.
  
  Currently many OSL features are unsupported (structs, arrays,
  closures, initops, params, etc). The arithmetic test, however, runs
  through correctly when run with testshade.
  
  This checkin contains also currently contains some cruft from my first
  hope of just taking the current interpreter code, running it through
  llvm-gcc and loading the bitcode. This approach got up and running
  quickly (ran much of the testsuite correctly) but had excessive memory
  usage and startup overhead.
........
  r639 | solomon.boulos | 2010-06-02 13:48:47 -0700 (Wed, 02 Jun 2010) | 4 lines
  
  This header is unused (and deprecated in llvm 2.7, it was just sitting
  around in my install) and broke the build for Larry.
........
  r640 | larrygritz | 2010-06-02 15:13:19 -0700 (Wed, 02 Jun 2010) | 5 lines
  
  Switch from LLVM-trunk to their official LLVM 2.7 release.  This entails
  passing the LLVMContext& around rather than relying on getting it with an
  API of theirs that apparently was in the trunk when Solomon wrote this
  code, but didn't make it into the 2.7 release.
........
  r641 | larrygritz | 2010-06-02 15:16:53 -0700 (Wed, 02 Jun 2010) | 2 lines
  
  Add license to the new files.
........
  r642 | larrygritz | 2010-06-02 15:43:47 -0700 (Wed, 02 Jun 2010) | 2 lines
  
  Reformat to match the style and formatting of the rest of the OSL code base.
........
  r643 | larrygritz | 2010-06-02 16:20:12 -0700 (Wed, 02 Jun 2010) | 2 lines
  
  Fix typo introduced in the last checkin.
........
  r644 | larrygritz | 2010-06-02 16:33:32 -0700 (Wed, 02 Jun 2010) | 5 lines
  
  Strip out Solomon's first experiments with LLVM (calling our OP_foo
  routines directly), since we know we won't use them.  And in the
  process, back out some changes that were necessary only to support that.
  This reduces the differences versus the trunk to many fewer files.
........
  r645 | larrygritz | 2010-06-02 16:39:21 -0700 (Wed, 02 Jun 2010) | 4 lines
  
  Move some LLVM-specific stuff from shadingsys.cpp into llvm_instance.cpp
  where the rest of its brother and sisters live.  Also reformat to match
  the prevailing style.
........
  r646 | larrygritz | 2010-06-02 17:10:39 -0700 (Wed, 02 Jun 2010) | 2 lines
  
  Some member renaming and more reformatting.
........
  r647 | solomon.boulos | 2010-06-04 16:20:32 -0700 (Fri, 04 Jun 2010) | 19 lines
  
  src/liboslexec/exec.cpp
  
   Disabling some old debugging printfs (they'll prove handy when we try out multithreading).
  
   Removing the old code that ran the old version of the code that used
   the bitcode loaded ops (functions were void
   RunLayer(ShadingExecution*, const int* opargs)).
  
  src/liboslexec/llvm_instance.cpp
  
   Some cleanups. Removing the old printf mangling that wasn't needed
   anymore as well as some debugging printfs.
  
   Implement several more ops: abs, fabs, sin, cos, compref,
   vector/color constructor, length, luminance, dot, cross, normalize.
  
   BUGFIX: AssignInitialConstant only supported scalars, now it supports
   arbitrary length data (i.e. vectors and colors as well).
........
  r648 | larrygritz | 2010-06-07 16:00:33 -0700 (Mon, 07 Jun 2010) | 5 lines
  
  Big LLVM refactor: move all the LLVM generation right into the
  RuntimeOptimizer.  This simplifies a lot and makes much of the structure
  of the JIT'er to be symmetric to other workings of the RO.
  This work isn't done yet, but checkpoint now.
........
  r649 | larrygritz | 2010-06-07 17:37:50 -0700 (Mon, 07 Jun 2010) | 5 lines
  
  More LLVM refactor: now ALL the LLVM IR-generating functions have the identical
  call signature:   foo (RuntimeOptimizer &rop, int opnum)
  and all else can be pulled from the rop.  Note the symmetry with the
  constant folding we do in runtimeoptimizer.cpp.  See where this is going?
........
  r650 | larrygritz | 2010-06-07 18:10:55 -0700 (Mon, 07 Jun 2010) | 2 lines
  
  More LLVM refactoring: Use dispatch table!  Just like runtimeoptimize.cpp.
........
  r651 | larrygritz | 2010-06-07 22:42:23 -0700 (Mon, 07 Jun 2010) | 3 lines
  
  LLVM refactoring: combine the basic block analysis of the previous
  RuntimeOptimizer and the new LLVM generation.
........
  r652 | larrygritz | 2010-06-08 06:52:57 -0700 (Tue, 08 Jun 2010) | 3 lines
  
  LLVM: make helper functions to return commonly-used llvm types; add comments;
  fully-qualify the namespace for all llvm:: things.
........
  r653 | larrygritz | 2010-06-08 11:32:35 -0700 (Tue, 08 Jun 2010) | 6 lines
  
  LLVM: fully implement LLVM generation for 'assign', including derivs and
  all type combinations that OSL supports (except closures).
  Also some renaming and utility functions for generating constants.
  Along the way, loadLLVMValue was modified to do float<->int typecasts
  automatically when requested.
........
  r654 | larrygritz | 2010-06-08 12:36:27 -0700 (Tue, 08 Jun 2010) | 3 lines
  
  LLVM: type casting bug fix; execute LLVM code whenever we are able to generate
  it; type helper routines.
........
  r655 | larrygritz | 2010-06-08 13:18:31 -0700 (Tue, 08 Jun 2010) | 2 lines
  
  LLVM: correct implementation of OSL division (x/0 = 0, not inf).
........
  r656 | larrygritz | 2010-06-08 21:01:36 -0700 (Tue, 08 Jun 2010) | 5 lines
  
  LLVM checkpoint: broke out add, sub, mul, div, and mod separately (bye-bye
  generic binary_op, it gets too ugly with the subtle differences between
  these ops).  These ops now fully implement all their variations involving
  int, float, and triples, including derivatives!  To do: matrices, closures.
........
  r657 | larrygritz | 2010-06-09 09:58:43 -0700 (Wed, 09 Jun 2010) | 2 lines
  
  LLVM: Handle closures for op assign.
........
  r658 | larrygritz | 2010-06-09 16:54:56 -0700 (Wed, 09 Jun 2010) | 6 lines
  
  LLVM: Complete the implementations of assign, add, sub, mul, and div -- 
  including closures and matrices.  For these complex things, I use wrapper
  functions, I don't try to write the inline assembly language for them.
  Also add a bunch of infrastructure to make it simple to generate code to
  call these helper functions.
........
  r659 | larrygritz | 2010-06-10 11:26:41 -0700 (Thu, 10 Jun 2010) | 4 lines
  
  LLVM: Get comparison working (correct handling of matrix cases) and remove
  unnecessary complexity for unneeded deriv & mixed float/int functionality.
  Also some work in progress toward supporting strings.
........
  r660 | larrygritz | 2010-06-10 21:49:11 -0700 (Thu, 10 Jun 2010) | 2 lines
  
  LLVM: fix allocation of strings -- now strings work!
........
  r661 | larrygritz | 2010-06-11 23:33:07 -0700 (Fri, 11 Jun 2010) | 11 lines
  
  LLVM: Fast way to get functionality -- write it in C++!  I've done all the
  work in cmake, scripting, etc., to make it so that we can write arbitrary
  bits of C++ in llvm_ops.cpp, have it compile with llvm-g++, save the bitcode
  and convert it back to C++ as a big binary blob, and then at runtime start
  up with LLVM understanding all those functions.  I've also confirmed that
  there is no penalty for this whatsoever given the right optimization settings
  (which I have done -- all these short functions are properly inlined and are
  as efficient as if they were hand-coded in LLVM asm).  That's how I'll code
  up the LLVM translations of nearly everything from here on out, except for
  the most trivial things that can be done in just an instruction or two.
........
  r662 | larrygritz | 2010-06-12 00:06:28 -0700 (Sat, 12 Jun 2010) | 2 lines
  
  LLVM: Get the bitwise operators working.
........
  r663 | larrygritz | 2010-06-12 22:16:07 -0700 (Sat, 12 Jun 2010) | 3 lines
  
  LLVM WIP: work on string ops; simplify construction of triples; pass
  ShadingContext* as second parameter to main entry point.
........
  r664 | larrygritz | 2010-06-14 12:18:19 -0700 (Mon, 14 Jun 2010) | 3 lines
  
  LLVM: Total overhaul of alloc/load/store/global pipeline.  But now that
  we've got all that straightened out, arrays (and aref/aassign) work!
........
  r665 | larrygritz | 2010-06-15 13:10:24 -0700 (Tue, 15 Jun 2010) | 5 lines
  
  LLVM: got matrix constructors working, including with space names!
  In the process, fix subtle bug with strings -- previous code had asked LLVM
  to CreateGlobalString, but this is not the same as our ustring values.
  Next up is the rest of the matrix ops, should be downhill from here.
........
  r666 | larrygritz | 2010-06-15 15:06:56 -0700 (Tue, 15 Jun 2010) | 3 lines
  
  LLVM WIP: now have mxcompref, mxcompassign implemented.
  Also overhauled compref (previously it only handled constant indices).
........
  r667 | larrygritz | 2010-06-15 15:47:02 -0700 (Tue, 15 Jun 2010) | 2 lines
  
  LLVM: ops and bug fixes to get all the remaining matrix-related ops working.
........
  r668 | larrygritz | 2010-06-15 16:30:41 -0700 (Tue, 15 Jun 2010) | 3 lines
  
  LLVM: Overhaul and fix triple constructor -- now handles derivatives and
  optional transformation names (except for color space names).
........
  r672 | larrygritz | 2010-06-15 16:42:11 -0700 (Tue, 15 Jun 2010) | 3 lines
  
  Several new testsuite reference outputs, for single-point execution order.
  (N.B. these tests now pass for LLVM-generated code!)
........
  r673 | larrygritz | 2010-06-15 18:23:29 -0700 (Tue, 15 Jun 2010) | 3 lines
  
  LLVM: implement compassign, length (including derivs).  Re-implement dot
  and cross (now including derivs).
........
  r674 | larrygritz | 2010-06-15 22:48:20 -0700 (Tue, 15 Jun 2010) | 3 lines
  
  LLVM: Implement distance, normalize.  Also refactor some duplicated dual
  arithmetic vector routines from llvm_ops and opvector into dual_vec.h.
........
  r675 | larrygritz | 2010-06-15 23:41:51 -0700 (Tue, 15 Jun 2010) | 3 lines
  
  LLVM: With some new naming conventions in llvm_ops.cpp, we can make a great
  many shadeops be handled in a uniform generic way.
........
  r676 | larrygritz | 2010-06-16 07:23:19 -0700 (Wed, 16 Jun 2010) | 4 lines
  
  LLVM: sin, cos, tan, asin, acos, atan, atan2, degrees, radians.
  Big macros in llvm_ops.cpp to make it trivial to add unary and binary
  per-component ops with full float/vector and derivative polymorphism.
........
  r677 | larrygritz | 2010-06-16 07:34:47 -0700 (Wed, 16 Jun 2010) | 2 lines
  
  LLVM: sinh, cosh, tanh (now passes testsuite/hyperb)
........
  r678 | larrygritz | 2010-06-16 11:38:32 -0700 (Wed, 16 Jun 2010) | 4 lines
  
  LLVM: implemented pow, exp*, erf*, log*.
  Rearranged the big llvm op table so it's alphabetical and is easy to see
  what's been done and what remains.
........
  r680 | larrygritz | 2010-06-16 14:42:21 -0700 (Wed, 16 Jun 2010) | 3 lines
  
  LLVM: Fix printf to properly direct output throught the ShadingSystem.
  Implement concat, format, error, warning, strlen, startswith, endswith, substr.
........
  r681 | larrygritz | 2010-06-16 15:26:43 -0700 (Wed, 16 Jun 2010) | 2 lines
  
  LLVM: arraylength, regex_match, regex_search
........
  r682 | larrygritz | 2010-06-16 15:31:23 -0700 (Wed, 16 Jun 2010) | 2 lines
  
  Restore this test to its original state.
........
  r683 | larrygritz | 2010-06-16 15:43:47 -0700 (Wed, 16 Jun 2010) | 2 lines
  
  LLVM: isnan, isinf, isfinite
........
  r684 | larrygritz | 2010-06-16 15:47:03 -0700 (Wed, 16 Jun 2010) | 2 lines
  
  Update ref output for single-shade
........
  r685 | larrygritz | 2010-06-17 06:57:16 -0700 (Thu, 17 Jun 2010) | 2 lines
  
  LLVM: sqrt, inversesqrt, neg, Dx, Dy
........
  r686 | larrygritz | 2010-06-17 10:43:28 -0700 (Thu, 17 Jun 2010) | 2 lines
  
  LLVM: hypot mix step clamp min max
........
  r687 | larrygritz | 2010-06-17 14:47:28 -0700 (Thu, 17 Jun 2010) | 2 lines
  
  Better comments explaining the calling conventions of llvm_ops.cpp.
........
  r690 | larrygritz | 2010-06-17 22:30:23 -0700 (Thu, 17 Jun 2010) | 2 lines
  
  Add needed empty codegen to suppress oslc warning we don't want to see.
........
  r691 | larrygritz | 2010-06-17 23:01:28 -0700 (Thu, 17 Jun 2010) | 2 lines
  
  LLVM: floor, ceil, round, trunc, step
........
  r692 | larrygritz | 2010-06-18 12:18:40 -0700 (Fri, 18 Jun 2010) | 2 lines
  
  LLVM: luminance
........
  r693 | larrygritz | 2010-06-18 17:56:10 -0700 (Fri, 18 Jun 2010) | 4 lines
  
  Detect LLVM -- handle gracefully if not found, or if not requested via
  'make USE_LLVM=0'.  Add ShadingSystem attribute "use_llvm" to allow turning
  it on and off at runtime.  And add llvm timing stats.
........
  r694 | larrygritz | 2010-06-19 00:18:11 -0700 (Sat, 19 Jun 2010) | 2 lines
  
  LLVM: Fix 'abs', it was implemented awkwardly and without correct derivs.
........
  r695 | larrygritz | 2010-06-20 22:28:58 -0700 (Sun, 20 Jun 2010) | 2 lines
  
  Meant to check this in with the last commit -- allow 'make USE_LLVM=0|1'
........
  r696 | clifford.stein | 2010-06-22 09:59:51 -0700 (Tue, 22 Jun 2010) | 5 lines
  
  Build system tweaks to allow compilation on machines with
  non-standard LLVM installations (and accompanying update
  to SPI's site configuration file).
........
  r697 | larrygritz | 2010-06-23 09:54:09 -0700 (Wed, 23 Jun 2010) | 6 lines
  
  LLVM: WIP getting shader parameters working.  Now input params whose values
  are constants or instance values work properly.  Still to do: params needing
  init ops, interpolated params, connections, and making output params end up
  with their values someplace where the system can get to them after the shader
  has finished running.
........
  r698 | larrygritz | 2010-06-23 12:09:11 -0700 (Wed, 23 Jun 2010) | 3 lines
  
  LLVM: The context needs to allocate and pass in the storage for params after
  all, or there's no good way to get the output params.
........
  r699 | clifford.stein | 2010-06-23 13:54:11 -0700 (Wed, 23 Jun 2010) | 5 lines
  
  - adding LLVM-implementation of smoothstep()
  - consolidating multiple (but same) implementations of 
    smoothstep() into one place
........
  r700 | larrygritz | 2010-06-23 20:49:45 -0700 (Wed, 23 Jun 2010) | 3 lines
  
  LLVM: snapshot WIP refactoring to handle multiple shader layers within a
  shader group.  Getting close now.
........
  r701 | clifford.stein | 2010-06-24 11:42:38 -0700 (Thu, 24 Jun 2010) | 6 lines
  
  - adding LLVM implementations for transform()
  - removed support for matrix derivatives in llvm_gen_generic
  - moved dual2<Matrix44> multiplication routines to be more
    accessible
........
  r702 | larrygritz | 2010-06-25 20:46:52 -0700 (Fri, 25 Jun 2010) | 3 lines
  
  LLVM: Multiple shader layers now executing (lazily!) most of the time.
  Still a bug I'm tracking down, there must be some edge case.
........
  r703 | larrygritz | 2010-06-26 14:34:31 -0700 (Sat, 26 Jun 2010) | 3 lines
  
  Bug fix: insertion of new ops (like useparam) was adjusting maincodebegin
  when necessary, but not maincodeend.  Led to odd errors with LLVM generation.
........
  r704 | larrygritz | 2010-06-26 14:38:13 -0700 (Sat, 26 Jun 2010) | 5 lines
  
  LLVM: Shader layer fixes: was computing group-wide data offsets incorrectly
  (so param values were going into the wrong slots); now correctly execute
  early lazy layers only once by keeping track of which have already been
  run; don't bother making space for scalar float and int constants.
........
  r705 | larrygritz | 2010-06-26 16:28:37 -0700 (Sat, 26 Jun 2010) | 4 lines
  
  LLVM: more work on layers -- now connections work!
  (small print: I think connecting arrays still doesn't work, but everything
  else does)
........
  r706 | larrygritz | 2010-06-27 12:00:06 -0700 (Sun, 27 Jun 2010) | 2 lines
  
  LLVM: More fixes related to arrays and parameters.
........
  r707 | larrygritz | 2010-06-27 12:00:53 -0700 (Sun, 27 Jun 2010) | 2 lines
  
  New reference output for some tests.
........
  r708 | larrygritz | 2010-06-28 13:42:28 -0700 (Mon, 28 Jun 2010) | 5 lines
  
  LLVM: Fix the fundamental flaws in "if" and loops, as well as making
  parameter init ops work correctly!  Got rid of bb_map in the process,
  and switch to generation of IR over ranges of ops, which is called
  recursively by the ops that jump around.
........
  r709 | larrygritz | 2010-06-28 14:53:06 -0700 (Mon, 28 Jun 2010) | 4 lines
  
  LLVM: Fix corner case: if an earlier layer is run first (non-lazily, which
  could happen if a different earlier layer triggered it), don't overwrite
  its outputs with our layer's defaults.
........
  r710 | larrygritz | 2010-06-28 16:55:33 -0700 (Mon, 28 Jun 2010) | 5 lines
  
  LLVM: Add ShadingContext::symbol_data to get pointer to specific symbol
  data for a gridpoint, correct whether the shader was executed by LLVM or
  the interpreter.  This allows testshade to correctly dump output either
  way as well.
........
  r711 | larrygritz | 2010-06-28 17:12:13 -0700 (Mon, 28 Jun 2010) | 4 lines
  
  LLVM bug fix: llvm_get_pointer mis-indexed when given an array index AND
  the variable has derivitives AND it was requested to return one of the
  derivs (not the main value).
........
  r712 | larrygritz | 2010-06-28 17:13:06 -0700 (Mon, 28 Jun 2010) | 2 lines
  
  Single-point-shading reference output for array-derivs.
........
  r713 | larrygritz | 2010-06-28 17:21:39 -0700 (Mon, 28 Jun 2010) | 2 lines
  
  Reverting the last change -- it was right before.
........
  r714 | larrygritz | 2010-06-29 07:30:00 -0700 (Tue, 29 Jun 2010) | 3 lines
  
  LLVM: First stab at making texture() work -- and it does for the basic
  arguments!  To do: optional args, should be easy to wrap up today.
........
  r715 | clifford.stein | 2010-06-29 08:55:04 -0700 (Tue, 29 Jun 2010) | 3 lines
  
  adding sincos() opcode to LLVM subsystem
........
  r716 | larrygritz | 2010-06-29 14:16:21 -0700 (Tue, 29 Jun 2010) | 2 lines
  
  LLVM: texture() working, all optional parameters except for "wrap."
........
  r717 | larrygritz | 2010-06-29 14:40:10 -0700 (Tue, 29 Jun 2010) | 3 lines
  
  Fix buglet in ShadingContext::symbol for the LLVM case.  In fact, it was this
  that prevented "wrap" from working, so now all texture-related tests pass.
........
  r718 | clifford.stein | 2010-06-29 14:41:38 -0700 (Tue, 29 Jun 2010) | 3 lines
  
  adding getattribute() op to LLVM subsystem
........
  r719 | larrygritz | 2010-06-29 15:10:52 -0700 (Tue, 29 Jun 2010) | 2 lines
  
  Clone opnoise.cpp -> noiseimpl.h to preserve history.  Part 2 coming next.
........
  r720 | larrygritz | 2010-06-29 15:12:35 -0700 (Tue, 29 Jun 2010) | 4 lines
  
  Split opnoise.cpp so that all the templates and inline functions that actually
  implement the noise functions are in noiseimpl.h, and only the interpreter
  opcodes are in opnoise.cpp.
........
  r721 | larrygritz | 2010-06-29 15:38:15 -0700 (Tue, 29 Jun 2010) | 2 lines
  
  LLVM: cellnoise
........
  r722 | larrygritz | 2010-06-29 17:22:22 -0700 (Tue, 29 Jun 2010) | 2 lines
  
  LLVM: noise, snoise
........
  r723 | larrygritz | 2010-06-29 17:25:38 -0700 (Tue, 29 Jun 2010) | 5 lines
  
  Allow runtest to optionally take allow minor image difference errors.  The
  default is still to fail if it's not an exact match, but this makes it easy
  to allow a small number of LSB errors, say, as we need to for noise with
  LLVM versus the interpreter.
........
  r724 | larrygritz | 2010-06-29 23:45:09 -0700 (Tue, 29 Jun 2010) | 2 lines
  
  LLVM: pnoise, psnoise
........
  r725 | clifford.stein | 2010-06-30 08:36:37 -0700 (Wed, 30 Jun 2010) | 3 lines
  
  adding LLVM implementation for gettextureinfo()
........
  r726 | clifford.stein | 2010-06-30 14:05:53 -0700 (Wed, 30 Jun 2010) | 4 lines
  
  Adding surfacearea(), isshadowray() and iscameraray() to 
  LLVM implementation.
........
  r728 | clifford.stein | 2010-06-30 16:01:57 -0700 (Wed, 30 Jun 2010) | 3 lines
  
  More LLVM op-code implementations: 'area', 'calculatenormal', and 'filterwidth'.
........
  r729 | clifford.stein | 2010-07-01 09:09:16 -0700 (Thu, 01 Jul 2010) | 4 lines
  
  adding logical and/or operations to LLVM
........
  r730 | clifford.stein | 2010-07-01 09:16:21 -0700 (Thu, 01 Jul 2010) | 3 lines
  
  fixing assert for debug builds
........
  r733 | larrygritz | 2010-07-01 10:11:18 -0700 (Thu, 01 Jul 2010) | 2 lines
  
  Update ref for single point shading results.
........
  r734 | larrygritz | 2010-07-01 10:23:15 -0700 (Thu, 01 Jul 2010) | 2 lines
  
  Updated refs and other minor fixes to get more tests passing.
........
  r735 | larrygritz | 2010-07-01 10:40:10 -0700 (Thu, 01 Jul 2010) | 2 lines
  
  LLVM: reflect, refract
........
  r736 | larrygritz | 2010-07-01 10:42:25 -0700 (Thu, 01 Jul 2010) | 2 lines
  
  Fix ref output
........
  r737 | larrygritz | 2010-07-01 11:07:54 -0700 (Thu, 01 Jul 2010) | 2 lines
  
  Fix fabs
........
  r738 | larrygritz | 2010-07-01 11:13:26 -0700 (Thu, 01 Jul 2010) | 2 lines
  
  New ref output
........
  r739 | larrygritz | 2010-07-01 11:17:14 -0700 (Thu, 01 Jul 2010) | 2 lines
  
  New ref outputs
........
  r740 | larrygritz | 2010-07-01 11:22:30 -0700 (Thu, 01 Jul 2010) | 2 lines
  
  New ref
........
  r741 | larrygritz | 2010-07-01 15:02:30 -0700 (Thu, 01 Jul 2010) | 2 lines
  
  New ref
........
  r742 | larrygritz | 2010-07-01 15:33:55 -0700 (Thu, 01 Jul 2010) | 2 lines
  
  LLVM: bug fix for case when connected parameter is itself a struct.
........
  r743 | larrygritz | 2010-07-01 16:26:32 -0700 (Thu, 01 Jul 2010) | 4 lines
  
  LLVM: Fix bug in printf arg pushing for arrays.  Took me quite a while to
  see that the failure of struct-with-array was actually a printf bug and
  nothing wrong with the actual handling of arrays as struct members!
........
  r744 | aconty | 2010-07-02 11:36:08 -0700 (Fri, 02 Jul 2010) | 1 line
  
  GEP fix in load_component_value
........
  r746 | clifford.stein | 2010-07-06 11:19:30 -0700 (Tue, 06 Jul 2010) | 3 lines
  
  adding Spline op-code to LLVM subsystem
........
  r747 | aconty | 2010-07-06 11:25:05 -0700 (Tue, 06 Jul 2010) | 1 line
  
  Allow for custom llvm build in the makefiles
........
  r749 | larrygritz | 2010-07-06 14:28:12 -0700 (Tue, 06 Jul 2010) | 2 lines
  
  Left these out of the last merge.
........
  r750 | larrygritz | 2010-07-06 14:40:38 -0700 (Tue, 06 Jul 2010) | 2 lines
  
  One more I forgot.  Sorry.
........
  r751 | larrygritz | 2010-07-06 16:15:52 -0700 (Tue, 06 Jul 2010) | 2 lines
  
  LLVM: setmessage/getmessage
........
  r752 | clifford.stein | 2010-07-06 16:16:01 -0700 (Tue, 06 Jul 2010) | 3 lines
  
  adding fresnel op to stdosl.h
........
  r753 | larrygritz | 2010-07-06 16:17:16 -0700 (Tue, 06 Jul 2010) | 2 lines
  
  Get rid of comments about closure functions that don't exist anymore.
........
  r755 | aconty | 2010-07-09 17:39:05 -0700 (Fri, 09 Jul 2010) | 3 lines
  
  Added llvm codegen for closure creation
  
  Also several auxiliary things fix by Larry
........
  r756 | larrygritz | 2010-07-09 23:17:01 -0700 (Fri, 09 Jul 2010) | 3 lines
  
  LLVM: fix printf for closures (was printing 3 times, since "color" has 3
  components, oops).
........
  r757 | larrygritz | 2010-07-10 13:15:51 -0700 (Sat, 10 Jul 2010) | 2 lines
  
  LLVM: Fixes to endswith and regex routines.
........
  r758 | larrygritz | 2010-07-10 13:16:10 -0700 (Sat, 10 Jul 2010) | 2 lines
  
  Update testsuite/closure ref output
........
  r759 | larrygritz | 2010-07-10 13:18:53 -0700 (Sat, 10 Jul 2010) | 2 lines
  
  Update ref output now that closures work.
........
  r760 | larrygritz | 2010-07-10 13:22:31 -0700 (Sat, 10 Jul 2010) | 2 lines
  
  Update ref output
........
  r761 | larrygritz | 2010-07-12 17:52:04 -0700 (Mon, 12 Jul 2010) | 4 lines
  
  LLVM: Rewrite min/max implementation to avoid crashes and asserts that I'm
  pretty sure are LLVM errors.  Spooky, but this approach is just as good
  and avoids the dragons.
........
  r762 | larrygritz | 2010-07-13 12:17:41 -0700 (Tue, 13 Jul 2010) | 2 lines
  
  Fix bugs in LLVM implementation of length, distance.
........
  r763 | larrygritz | 2010-07-13 12:29:20 -0700 (Tue, 13 Jul 2010) | 2 lines
  
  New ref output
........
  r764 | larrygritz | 2010-07-13 15:40:53 -0700 (Tue, 13 Jul 2010) | 2 lines
  
  LLVM: get color ctr with color space name working.
........
  r765 | larrygritz | 2010-07-13 17:54:08 -0700 (Tue, 13 Jul 2010) | 3 lines
  
  LLVM: bug squashing -- we were leaving connected closures in an uninitialized
  state.
........
  r766 | larrygritz | 2010-07-13 17:54:38 -0700 (Tue, 13 Jul 2010) | 2 lines
  
  New ref image and minor printf (shader bug!) fixes for struct-layers test.
........
  r767 | larrygritz | 2010-07-14 14:06:01 -0700 (Wed, 14 Jul 2010) | 2 lines
  
  Bug fix: be robust to client not initializing time, dtime globals.
........
  r768 | larrygritz | 2010-07-14 14:06:26 -0700 (Wed, 14 Jul 2010) | 3 lines
  
  Bug fix: Don't allocate new space for Ci -- it's already in the caller's
  globals!
........
  r769 | larrygritz | 2010-07-14 14:48:03 -0700 (Wed, 14 Jul 2010) | 3 lines
  
  LLVM code generation bug fixes: problem with a context generating code
  for more than one group; problems with calculatenormal.
........
  r770 | larrygritz | 2010-07-15 09:40:32 -0700 (Thu, 15 Jul 2010) | 6 lines
  
  LLVM bug fix: we were allowing the JIT to happen when the function was called,
  and that got us into race condition trouble with multiple threads.  Rearranged
  now to force the JIT to occur right when we generate the LLVM IR (i.e. while
  we still have a lock), and this also simplifies by only having to store and
  return a real function pointer, rather than an llvm::Function*.
........
  r771 | larrygritz | 2010-07-15 15:09:46 -0700 (Thu, 15 Jul 2010) | 2 lines
  
  Only some globals may have derivatives (not N, for example).
........
  r772 | larrygritz | 2010-07-15 17:52:46 -0700 (Thu, 15 Jul 2010) | 2 lines
  
  Not all incoming shader globals are non-NULL; be careful about dereferencing.
........
  r773 | larrygritz | 2010-07-15 17:53:43 -0700 (Thu, 15 Jul 2010) | 5 lines
  
  Define LLVM_SUPPORT in oslconfig.h so that the client app can have 
  appropriate ifdefs to support new APIs for extracting output vars.
  This is temporary and will be removed after we merge the LLVM branc
  back into the trunk.
........
  r774 | larrygritz | 2010-07-16 11:52:38 -0700 (Fri, 16 Jul 2010) | 2 lines
  
  Need to copy P, dPd[xy], and N out after displacement.
........
  r775 | solomon.boulos | 2010-07-16 16:22:50 -0700 (Fri, 16 Jul 2010) | 8 lines
  
  src/liboslexec/shadingsys.cpp
  
   Properly initialize the llvm context to NULL.
  
   Also delete the ExecutionEngine on ShadingSystem shutdown which
   should also remove the module (EE owns Module apparently), while
   leaving a note about needing to call llvm_shutdown().
........
  r776 | larrygritz | 2010-07-16 17:12:04 -0700 (Fri, 16 Jul 2010) | 3 lines
  
  LLVM: handle interpolated user data.  (Not all cases seem to work, there's
  some adjustment coming, I'm sure.)
........
  r777 | ckulla@gmail.com | 2010-07-16 17:39:37 -0700 (Fri, 16 Jul 2010) | 1 line
  
  Implement missing get_attribute for colors
........
  r778 | larrygritz | 2010-07-16 17:53:06 -0700 (Fri, 16 Jul 2010) | 2 lines
  
  More userdata fixes.  (A bit wasteful, but we'll come back to it.)
........
  r779 | ckulla@gmail.com | 2010-07-16 17:54:42 -0700 (Fri, 16 Jul 2010) | 1 line
  
  Fix order of tests to avoid calling is_float() on A if it might be a closure
........
  r780 | ckulla@gmail.com | 2010-07-16 19:18:33 -0700 (Fri, 16 Jul 2010) | 1 line
  
  Setup the symbols in two passes: first constants/locals/temp, then shader params. The shader parameters may depend on values that appear later in the list of symbols because of init ops.
........
  r781 | larrygritz | 2010-07-17 16:53:56 -0700 (Sat, 17 Jul 2010) | 3 lines
  
  LLVM: Bug fixes for subtle ordering problems of parameters, init ops, and
  layer connections.
........
  r782 | larrygritz | 2010-07-19 15:01:29 -0700 (Mon, 19 Jul 2010) | 6 lines
  
  Bug fix in oslc -- was using the wrong criteria for whether to force a
  ___main___ code marker.  The previous logic could fail if there was a param
  with init ops, but no ops in the main shader body.  This would lead to NO
  ___main___ being emitted, which could lead to a (rare, subtle) cascade of
  errors that could include certain ops being doubly executed!
........
  r783 | larrygritz | 2010-07-19 16:48:02 -0700 (Mon, 19 Jul 2010) | 3 lines
  
  LLVM bug fix -- was incorrectly pointing to the potentially wrong basic block
  when adding the main code.
........
  r784 | larrygritz | 2010-07-21 00:11:18 -0700 (Wed, 21 Jul 2010) | 11 lines
  
  Several important LLVM fixes:
  * Need to allot slots for all layers' closure params up front (in the group
  entry point) to avoid lazy layer evaluation trying to write results into
  later layer's param that hasn't yet been initialized.
  * Closure labels and sidedness handling needed to be changed to accommodate
  production shaders whose label and sidedness values aren't easily-discerned
  constants.
  * Removed incorrect / obsolete assertions.
  * Removed some debugging printfs no longer needed.
  * Start toying with optimization pass management.
........


git-svn-id: https://openshadinglanguage.googlecode.com/svn/trunk@786 a3683778-fedd-11de-87c3-653bb6514e15
2010-07-22 00:49:06 +00:00
Larry Gritz 3779465f76 Refactor and beef up the ASTvariable_declaration typecheck and codegen
methods (and some auxiliary fixes to support this). This allows the full
range of operations involving structs that have elements which are
themselves arrays.  In particular, nested {} compound initializers can
initialize array elements within a structure field.
Also added new tests to more thoroughly test this as well as error checking
for illegal activities related to structures.
Refs:  trac#129  http://reviewboard/r/867/



git-svn-id: https://openshadinglanguage.googlecode.com/svn/trunk@507 a3683778-fedd-11de-87c3-653bb6514e15
2010-01-06 00:01:20 +00:00