[LLVMdev] TSFlags
Sky Flyer
skylake007 at googlemail.com
Mon Jul 27 05:40:40 PDT 2015
Hi Krzystof,
regarding your first solution (creating separate instruction), is it
possible to somehow have cascading defm?
for example, let's suppose aaa is a 3-bit condition a, and bb is a 2-bit
condition b, all in one instruction, instead of having one multiclass with
2^5 conditions, is it possible to write 2^3 "a" conditions, and 2^2 "b"
conditions, and the rest taken care by the TableGen?
On Fri, Jul 10, 2015 at 5:59 PM, Krzysztof Parzyszek <
kparzysz at codeaurora.org> wrote:
> On 7/10/2015 10:23 AM, Sky Flyer wrote:
>
>> Many thanks for your prompt reply.
>>
>> I mean, imagine you have 3 bits for condition flags in your instruction
>> (e.g. overflow, zero, carry set, ...) for conditional executions AND
>> there is no direct access to the Status Register, is it even possible to
>> implement such scenario?
>>
>>
> There doesn't have to be any explicit status register. You can either
> create separate instructions for each condition, or have the condition as
> an extra operand. Let's take "add" for example. You could have several
> versions of add:
> add add unconditionally
> addc add if carry
> addz add if zero
> addo add if overflow
> and similarly for more complex conditions that your target could support,
> such as "carry or zero". This has the disadvantage that the instruction
> set can get really large, but if the number of conditional instructions is
> small or if the possible conditions vary from one operation to another,
> this may be a viable solution.
> The other option is to model the condition as an operand (I think ARM does
> that). So the add instruction could look like this:
> R0 = add R1, R2, C
> where
> C = 0: no conditions
> C = 1: zero
> C = 2: carry
> C = 4: overflow
> etc.
>
> This way the instruction set would remain small, but it may involve
> special handling for it to work with the integrated assembler (if the
> native instruction format is different than what you chose).
>
> You could use the TSFlags to indicate for each instruction which condition
> this instruction can modify. Taking the add again, it could modify all of
> the three: zero, carry and overflow, but a load could only modify zero (for
> example, specifics would depend on your target).
>
>
>
> -Krzysztof
>
>
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted
> by The Linux Foundation
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150727/a3bc2012/attachment.html>
More information about the llvm-dev
mailing list