Announcement

Collapse
No announcement yet.

R600 Gallium3D LLVM Shader Compiler Hooked Up

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #51
    Originally posted by Drago View Post
    Changing this:
    Code:
    bld_base->op_actions[TGSI_OPCODE_KIL].intr_name = "llvm.AMDGPU.kill";
    into this:
    Code:
    bld_base->op_actions[TGSI_OPCODE_KIL].intr_name = "llvm.AMDGPU.kilp";
    Game is playable, but with model artifacts. I believe they are not related to this change.
    From this definition in R600Instructions.td, I conclude that above patching is legit:
    Code:
    def KILP : Pat <
      (int_AMDGPU_kilp),
      (MASK_WRITE (KILLGT (f32 ONE), (f32 ZERO)))
    >;
    Probably the same as KILL, but with small overhead.
    KILP and KIL are different instructions. KILP unconditionally kills a pixel, while KIL conditionally kills the pixel based on the value of src0. The intrinsic llvm.AMDGPU.kill is correct for TGSI_OPCODE_KIL. The reason you are seeing the "cannot select" error is because there is no pattern like the one above for int_AMDGPU_kill.

    In order to figure out what pattern to use, you need to look at the definition of KIL in the tgsi docs (src/gallium/docs/source/tgsi.rst) and then look in the ISA doc (there is a list of ISA docs here: http://www.x.org/wiki/RadeonFeature) for your card to find the r600 hardware instruction that KIL should be lowered to.

    Comment

    Working...
    X