Commit graph

15 commits

Author SHA1 Message Date
Robert Ellison
f8bba34d4e CELL: finish fragment ops blending (except for unusual D3D modes)
- Added new "macro" functions spe_float_min() and spe_float_max()
  to rtasm_ppc_spe.{ch}.  These emit instructions that cause
  the minimum or maximum of each element in a vector of floats
  to be saved in the destination register.

- Major changes to cell_gen_fragment.c to implement all the blending
  modes (except for the mysterious D3D-based PIPE_BLENDFACTOR_SRC1_COLOR,
  PIPE_BLENDFACTOR_SRC1_ALPHA, PIPE_BLENDFACTOR_INV_SRC1_COLOR, and
  PIPE_BLENDFACTOR_INV_SRC1_ALPHA).

- Some revamping of code in cell_gen_fragment.c: use the new spe_float_min()
  and spe_float_max() functions (instead of expanding these calculations
  inline via macros); create and use an inline utility function for handling
  "optional" register allocation (for the {1,1,1,1} vector, and the
  blend color vectors) instead of expanding with macros; use the Float
  Multiply and Subtract (fnms) instruction to simplify and optimize many
  blending calculations.
2008-09-18 01:29:41 -06:00
Brian Paul
ae3373441d gallium: emit SPU instructions in assembler-compatible syntax 2008-09-15 15:10:02 -06:00
Jonathan White
367774a62a Fixed emit_RRR 2008-09-15 11:57:59 -06:00
Brian Paul
8b5013d232 gallium: added print/dump code to SPE code emitter 2008-09-12 21:52:47 -06:00
Brian Paul
31a112cad4 gallium: added spe_splat_word() 2008-09-12 21:08:01 -06:00
Brian Paul
b71f4150c8 gallium: minor optimization to spe_load_int() 2008-09-12 08:22:15 -06:00
Brian Paul
178bbaff80 gallium: add special cases in spe_load_float(), spe_load_int(), added spe_splat() 2008-09-11 17:10:32 -06:00
Brian Paul
ee582fd3a7 gallium: assorted additions and fixes to Cell SPE rtasm code
Fix incorrect opcode for fsmbi.
Added "macro" functions for loading floats/ints, register complement, zero, move.
Added #defines for return address and stack pointer registers.
Added assertions to check that the instruction buffer doesn't overflow.
2008-09-11 10:39:28 -06:00
Brian Paul
bb5becf1e2 gallium: comments, assertions, etc 2008-09-11 10:39:28 -06:00
Brian Paul
4f25420bdd gallium: refactor/replace p_util.h with util/u_memory.h and util/u_math.h
Also, rename p_tile.[ch] to u_tile.[ch]
2008-08-24 17:48:55 -06:00
Ian Romanick
84d8030735 cell: Float convert-to and convert-from instructions use different shift bias 2008-03-25 18:15:58 -07:00
Ian Romanick
9f106a8683 cell: Don't free NULL code pointers 2008-03-17 16:07:54 -07:00
Ian Romanick
0c715de39f cell: Fix simple register allocator
THere are 64-bits in a uint64_t, not 128.  Duh.
2008-03-17 15:47:45 -07:00
Ian Romanick
b1525662b3 Move SPE register allocator to rtasm code
Move the register allocator to a common location.  There is more code
on the way that will make use of this interface.
2008-03-10 17:00:44 -07:00
José Fonseca
5d78212d75 Bring in ppc spe rtasm into gallium's rtasm module.
Moving files since these are not being used outside gallium.
2008-02-19 14:06:11 +09:00
Renamed from src/mesa/ppc/rtasm/spe_asm.c (Browse further)