Displaying 20 results from an estimated 112 matches for "cpsr".
Did you mean:
cps
2011 Sep 07
1
[LLVMdev] ARM CPSR liveness
All,
ARM LLVM afficianados: I'm trying to understand how LiveVariables computes
liveness for CPSR. In particular,
I would like to tell whether a particular instruction is a use/kill/def for
doing some within block liveness checking I need.
Thanks in advance,
David
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/atta...
2010 Sep 05
2
[LLVMdev] Possible missed optimization?
...or2
}
produces these instructions before coalescing:
4L %reg16387<def> = COPY %R3<kill>
12L %reg16386<def> = COPY %R2<kill>
28L %reg16384<def> = COPY %R0<kill>
36L %reg16388<def> = COPY %reg16385<kill>
44L %reg16388<def>, %CPSR<def,dead> = tEOR %reg16388, %reg16387<kill>, pred:14, pred:%reg0
56L %reg16389<def> = COPY %reg16384<kill>
64L %reg16389<def>, %CPSR<def,dead> = tEOR %reg16389, %reg16386<kill>, pred:14, pred:%reg0
76L %reg16390<def>, %CPSR<def,dead>...
2010 Sep 05
0
[LLVMdev] Possible missed optimization?
On Sat, Sep 4, 2010 at 1:31 PM, Jakob Stoklund Olesen <stoklund at 2pi.dk> wrote:
>
> On Sep 4, 2010, at 11:21 AM, Borja Ferrer wrote:
>
>> I've noticed this pattern happening with other operators aswell, but used xor in this example. As i said before, i tried with different register allocation orders, but it will produce always the same result. GCC is emitting longer
2018 Dec 04
2
Incorrect placement of an instruction after PostRAScheduler pass
..."r" (val) : "memory");
}
------------------------
# *** IR Dump Before Post RA top-down list latency scheduler ***:
BB#6: derived from LLVM BB %if.else
Live Ins: %LR %R2 %R3 %R4 %R7 %R12
Predecessors according to CFG: BB#0
CMPri %R12, 1, pred:14, pred:%noreg, %CPSR<imp-def>
<<<<<<<<<<< First comparison using lock_flag ; R12 holds lock_flag
%R5<def> = IMPLICIT_DEF
Bcc <BB#21>, pred:1, pred:%CPSR<kill> <<<<<<<<<<<
Successors according to CFG: BB#7(0x400...
2020 Jun 18
2
[ARM] Thumb code-gen for 8-bit imm arguments results in extra reg copies
...ev at lists.llvm.org> wrote:
> > (b) Modifies RegisterCoalescer::reMaterializeTrivialDef and
> > TargetInstrInfo::isReallyTriviallyReMaterializableGeneric to check
> > for single live def, instead of single def.
>
> This seems dodgy to me. The instruction does also change CPSR so for
> the transformation to be valid you have to know that register is dead
> where the new instruction is being inserted. As far as I can tell the
> hasOneDef check in reMaterializeTrivialDef is a simple heuristic to
> keep the analysis local and avoid dealing with such issues.
>...
2012 Feb 04
4
[LLVMdev] ARMLoadStoreOptimizer bug
...derived from LLVM BB %cond.end
Live Ins: %LR %R0 %R1 %R7 %R10 %R11
Predecessors according to CFG: BB#14 BB#18
STRi12 %R7<kill>, %R1, 0, pred:14, pred:%noreg;
mem:ST4[%first257](tbaa=!"int")
%R1<def> = ADDri %R1<kill>, 4, pred:14, pred:%noreg, opt:%CPSR<def>
Bcc <BB#23>, pred:0, pred:%CPSR<kill>
B <BB#22>
Successors according to CFG: BB#23 BB#22
# After ARMLoadStoreOptimizer:
BB#21: derived from LLVM BB %cond.end
Live Ins: %LR %R0 %R1 %R7 %R10 %R11
Predecessors according to CFG: BB#14 BB#18...
2010 Sep 04
3
[LLVMdev] Possible missed optimization?
On Sep 4, 2010, at 11:21 AM, Borja Ferrer wrote:
> I've noticed this pattern happening with other operators aswell, but used xor in this example. As i said before, i tried with different register allocation orders, but it will produce always the same result. GCC is emitting longer code, but since LLVM is so nearer to the optimal code sequence i wanted to reach it.
In LLVM, copies are
2017 Oct 09
4
{ARM} IfConversion does not detect BX instruction as a branch
...%15](align=4)
> %R3<def> = EORri %R6, 254, pred:14, pred:%noreg, opt:%noreg
> %R3<def> = ANDrr %R3<kill>, %R6<kill>, pred:14, pred:%noreg, opt:%noreg
> %R6<def> = MOVi 0, pred:14, pred:%noreg, opt:%noreg
> TSTri %R3<kill>, 255, pred:14, pred:%noreg, %CPSR<imp-def>;
> Bcc <BB#9>, pred:0, pred:%CPSR<kill>;
>
> BB#8:
> Live Ins: %LR %R0 %R1 %R2 %R4 %R5 %R6 %R7 %R8 %R9 %R10 %R12
> Predecessors according to CFG: BB#7
> STRi12 %R6, %R7<kill>, 4, pred:14, pred:%noreg; mem:ST4[%__size_.i3.i.i.i.i]
> %R6<de...
2012 Feb 07
0
[LLVMdev] ARMLoadStoreOptimizer bug
...%cond.end
> Live Ins: %LR %R0 %R1 %R7 %R10 %R11
> Predecessors according to CFG: BB#14 BB#18
> STRi12 %R7<kill>, %R1, 0, pred:14, pred:%noreg; mem:ST4[%first257](tbaa=!"int")
> %R1<def> = ADDri %R1<kill>, 4, pred:14, pred:%noreg, opt:%CPSR<def>
> Bcc <BB#23>, pred:0, pred:%CPSR<kill>
> B <BB#22>
> Successors according to CFG: BB#23 BB#22
>
> # After ARMLoadStoreOptimizer:
> BB#21: derived from LLVM BB %cond.end
> Live Ins: %LR %R0 %R1 %R7 %R10 %R11
> Predece...
2010 Dec 03
2
[LLVMdev] LLVM API: how to determine if the register is the status register
Hello.
I've got the "unsigned int" register number. How one uses LLVM API to
determine if that register is the status register (e.g., ARM::CPSR) or
not? I know I can just compare the number with ARM::CPSR, but the code
becomes not universal. I gave up searching for the solution by myself...
Thanks.
2015 Aug 10
2
ARM: Predicated returns considered analyzable?
...CFI_INSTRUCTION <call frame instruction>; flags: FrameSetup
%R7<def> = tMOVr %SP<kill>, pred:14, pred:%noreg; flags: FrameSetup
CFI_INSTRUCTION <call frame instruction>; flags: FrameSetup
t2CMPri %R1<kill>, 0, pred:14, pred:%noreg, %CPSR<imp-def>
t2CMPri %R0<kill>, 3, pred:1, pred:%CPSR, %CPSR<imp-def>,
%CPSR<imp-use,undef>
--> %SP<def,tied1> = t2LDMIA_RET %SP<tied0>, pred:8, pred:%CPSR,
%R7<def>, %PC<def>, %SP<imp-use,undef>, %R7<imp-use,undef>,
%PC<...
2010 Sep 14
2
[LLVMdev] Thumb categorizing TST wrongly
I see strangeness on Thumb TST (tTST) predicate 'isCompare'
It is true for regular ARM, false for Thumb:
(gdb) p MI->dump()
TSTri %reg16397, 3, pred:14, pred:%reg0, %CPSR<imp-def>; GPR:%
reg16397
$24 = void
(gdb) p MI->getDesc().isCompare()
$25 = true
(gdb) p MI->dump()
tTST %reg16396, %reg16397, pred:14, pred:%reg0, %CPSR<imp-def>;
tGPR:%reg16396,16397
$22 = void
(gdb) p MI->getDesc().isCompare()
$23 = false
Is this intentional or jus...
2015 Aug 12
2
ARM: Predicated returns considered analyzable?
Doh. I missed the list in my first reply... Here's the replay of the
conversation:
----- Renato:
On 10 August 2015 at 14:05, Krzysztof Parzyszek via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> --> %SP<def,tied1> = t2LDMIA_RET %SP<tied0>, pred:8, pred:%CPSR,
> %R7<def>, %PC<def>, %SP<imp-use,undef>, %R7<imp-use,undef>,
> %PC<imp-use,undef>
>
> Here the instruction t2LDMIA_RET is a terminator and yet it's
followed by a
> non-terminator tBLXi. This looks wrong. Does anyone have any
comments on
&...
2011 Feb 18
2
[LLVMdev] Adding "S" suffixed ARM/Thumb2 instructions
...removes the
redundant comparison in patterns like
orr r1, r2, r3 ----> orrs r1, r2, r3
cmp r1, 0
This optimization has shown nice acceleration, e.g. 3.3% in SQLite on
CortexA8 and works fine.
I have some questions though.
1)"neverHasSideEffects" in tablegen means that CPSR is not implicitly
defined, doesn't it?
2)What else can be done using that super "S" power?
3)Current optimization implementation works similar to peephole (peephole
pitiful cmp optimization was disabled),
right before ifcvt. Should I raise it up somewhere? What do you think is the
rig...
2011 Feb 18
0
[LLVMdev] Adding "S" suffixed ARM/Thumb2 instructions
...trying hard to avoid adding those "twins". The instructions that can optionally set the condition codes have an "optional def" operand. For example, look at the "cc_out" operand in the "sI" class defined in ARMInstrFormats.td. If that operand is set to the CPSR register, then the instruction becomes the "s" variant.
There are some existing peephole optimizations to make use of this, but there are some unresolved issues as well. Do you have some example testcases that show where we're missing opportunities?
2012 Feb 07
1
[LLVMdev] ARMLoadStoreOptimizer bug
...Ins: %LR %R0 %R1 %R7 %R10 %R11
> > Predecessors according to CFG: BB#14 BB#18
> > STRi12 %R7<kill>, %R1, 0, pred:14, pred:%noreg;
> mem:ST4[%first257](tbaa=!"int")
> > %R1<def> = ADDri %R1<kill>, 4, pred:14, pred:%noreg,
> opt:%CPSR<def>
> > Bcc <BB#23>, pred:0, pred:%CPSR<kill>
> > B <BB#22>
> > Successors according to CFG: BB#23 BB#22
> >
> > # After ARMLoadStoreOptimizer:
> > BB#21: derived from LLVM BB %cond.end
> > Live Ins: %LR %R0...
2009 Jan 07
4
[LLVMdev] Possible bug in the ARM backend?
...LLVM BB @0x8fc2c48, ID#0:
Live Ins: %R0 %R1
%reg1026<def,dead> = MOVr %R1<kill>, 14, %reg0, %reg0
%reg1025<def> = MOVr %R0<kill>, 14, %reg0, %reg0
%reg1024<def> = MOVr %reg1025, 14, %reg0, %reg0
CMPri %reg1025<kill>, 0, 14, %reg0, %CPSR<imp-def>
Bcc mbb<UnifiedReturnBlock,0x8fdad70>, 10, %CPSR<kill>
Successors according to CFG: 0x8fdad00 (#1) 0x8fdad70 (#2)
bb368: 0x8fdad00, LLVM BB @0x8fc2c98, ID#1:
Predecessors according to CFG: 0x8fdac90 (#0)
%reg1027<def> = MOVi 0, 14, %reg0, %r...
2009 Jan 13
2
[LLVMdev] Possible bug in the ARM backend?
...it?
> **** Post Machine Instrs ****
> # Machine code for Insert():
> Live Ins: R0 in VR#1025 R1 in VR#1026
>
> entry: 0x8fdac90, LLVM BB @0x8fc2c48, ID#0:
> Live Ins: %R0 %R1
> %LR<def> = MOVr %R0, 14, %reg0, %reg0
> CMPri %R0<kill>, 0, 14, %reg0, %CPSR<imp-def>
> Bcc mbb<UnifiedReturnBlock,0x8fdad70>, 10, %CPSR<kill>
> Successors according to CFG: 0x8fdad00 (#1) 0x8fdad70 (#2)
>
> bb368: 0x8fdad00, LLVM BB @0x8fc2c98, ID#1:
> Predecessors according to CFG: 0x8fdac90 (#0)
> %R0<def> = MOVi...
2010 Sep 14
0
[LLVMdev] Thumb categorizing TST wrongly
On Sep 14, 2010, at 12:09 PM, Gabor Greif wrote:
> I see strangeness on Thumb TST (tTST) predicate 'isCompare'
>
> It is true for regular ARM, false for Thumb:
>
> (gdb) p MI->dump()
> TSTri %reg16397, 3, pred:14, pred:%reg0, %CPSR<imp-def>; GPR:%
> reg16397
> $24 = void
> (gdb) p MI->getDesc().isCompare()
> $25 = true
>
>
> (gdb) p MI->dump()
> tTST %reg16396, %reg16397, pred:14, pred:%reg0, %CPSR<imp-def>;
> tGPR:%reg16396,16397
> $22 = void
> (gdb) p MI->getDesc(...
2009 Jan 13
0
[LLVMdev] Possible bug in the ARM backend?
...R should be
added to livein of BB #1.
**** Post Machine Instrs ****
# Machine code for Insert():
Live Ins: R0 in VR#1025 R1 in VR#1026
entry: 0x8fdac90, LLVM BB @0x8fc2c48, ID#0:
Live Ins: %R0 %R1
%LR<def> = MOVr %R0, 14, %reg0, %reg0
CMPri %R0<kill>, 0, 14, %reg0, %CPSR<imp-def>
Bcc mbb<UnifiedReturnBlock,0x8fdad70>, 10, %CPSR<kill>
Successors according to CFG: 0x8fdad00 (#1) 0x8fdad70 (#2)
bb368: 0x8fdad00, LLVM BB @0x8fc2c98, ID#1:
Predecessors according to CFG: 0x8fdac90 (#0)
%R0<def> = MOVi 0, 14, %reg0, %reg0...