[Mesa-dev] [PATCH 10/12] R600/SI: cleanup literal handling v2
Michel Dänzer
michel at daenzer.net
Thu Feb 14 05:35:28 PST 2013
On Don, 2013-02-14 at 11:43 +0100, Christian König wrote:
> From: Christian König <christian.koenig at amd.com>
>
> Seems to be allot simpler, and also paves the
> way for further improvements.
>
> v2: rebased on master, use 0 in BUFFER_LOAD_FORMAT_XYZW,
> use VGPR0 in dummy EXP, avoid compiler warning, break
> after encoding the first literal.
Not sure how much this differs from what you wanted to send, but FWIW:
> + // Only one literal allowed
> + break;
The same literal could be used for several operands though. :)
> diff --git a/lib/Target/R600/SIISelLowering.cpp b/lib/Target/R600/SIISelLowering.cpp
> index ceab692..d62bdd1 100644
> --- a/lib/Target/R600/SIISelLowering.cpp
> +++ b/lib/Target/R600/SIISelLowering.cpp
> @@ -77,8 +77,8 @@ MachineBasicBlock * SITargetLowering::EmitInstrWithCustomInserter(
> BuildMI(*BB, I, BB->findDebugLoc(I), TII->get(AMDGPU::V_ADD_F32_e64))
> .addOperand(MI->getOperand(0))
> .addOperand(MI->getOperand(1))
> - .addReg(AMDGPU::SREG_LIT_0)
> - .addReg(AMDGPU::SREG_LIT_0)
> + .addImm(0) // SRC1
> + .addImm(0) // SRC2
> .addImm(0) // ABS
> .addImm(1) // CLAMP
> .addImm(0) // OMOD
For me this resulted in encoding 0 directly (because these operands are
not declared as VSrc_32), i.e. VGPR0, which is no good here.
addImm(0x80) for inline constant 0 worked for me.
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Debian, X and DRI developer
More information about the mesa-dev
mailing list