[llvm] r277610 - [ARM] Constant Materialize: imms with specific value can be encoded into mov.w

Zhao, Weiming via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 3 14:37:41 PDT 2016


Thanks Bruno.

I just reproduced it by explicitly adding the mtriple.

I will fix the test case.


Thanks,

Weiming


On 8/3/2016 2:35 PM, Bruno Cardoso Lopes wrote:
> I reverted the commit in r277654. If you want to double check it works
> on darwin before re-checkin, send me the patch and I'll give it a try.
>
> Thanks,
>
> On Wed, Aug 3, 2016 at 10:28 AM, Bruno Cardoso Lopes
> <bruno.cardoso at gmail.com> wrote:
>> Hi,
>>
>> This make ARM.subtarget-no-movt.ll fail on
>> http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_check/26892,
>> can you take a look?
>>
>> Thanks
>>
>> On Wed, Aug 3, 2016 at 10:05 AM, Weiming Zhao via llvm-commits
>> <llvm-commits at lists.llvm.org> wrote:
>>> Author: weimingz
>>> Date: Wed Aug  3 12:05:23 2016
>>> New Revision: 277610
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=277610&view=rev
>>> Log:
>>> [ARM] Constant Materialize: imms with specific value can be encoded into mov.w
>>>
>>> Summary: Thumb2 supports encoding immediates with specific patterns into mov.w by splatting the low 8 bits into other bytes.
>>>
>>> Reviewers: john.brawn, jmolloy
>>>
>>> Subscribers: jmolloy, aemerson, rengolin, samparker, llvm-commits
>>>
>>> Differential Revision: https://reviews.llvm.org/D23090
>>>
>>> Modified:
>>>      llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp
>>>      llvm/trunk/test/CodeGen/ARM/subtarget-no-movt.ll
>>>
>>> Modified: llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp?rev=277610&r1=277609&r2=277610&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp (original)
>>> +++ llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp Wed Aug  3 12:05:23 2016
>>> @@ -476,7 +476,9 @@ bool ARMDAGToDAGISel::isShifterOpProfita
>>>   unsigned ARMDAGToDAGISel::ConstantMaterializationCost(unsigned Val) const {
>>>     if (Subtarget->isThumb()) {
>>>       if (Val <= 255) return 1;                               // MOV
>>> -    if (Subtarget->hasV6T2Ops() && Val <= 0xffff) return 1; // MOVW
>>> +    if (Subtarget->hasV6T2Ops() &&
>>> +        (Val <= 0xffff || ARM_AM::getT2SOImmValSplatVal(Val) != -1))
>>> +      return 1; // MOVW
>>>       if (Val <= 510) return 2;                               // MOV + ADDi8
>>>       if (~Val <= 255) return 2;                              // MOV + MVN
>>>       if (ARM_AM::isThumbImmShiftedVal(Val)) return 2;        // MOV + LSL
>>>
>>> Modified: llvm/trunk/test/CodeGen/ARM/subtarget-no-movt.ll
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/subtarget-no-movt.ll?rev=277610&r1=277609&r2=277610&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/test/CodeGen/ARM/subtarget-no-movt.ll (original)
>>> +++ llvm/trunk/test/CodeGen/ARM/subtarget-no-movt.ll Wed Aug  3 12:05:23 2016
>>> @@ -42,4 +42,21 @@ define i32 @foo1(i32 %a) {
>>>     ret i32 %1
>>>   }
>>>
>>> +; NO-OPTION-LABEL: {{_?}}foo2
>>> +; NO-OPTION: mov.w     r0, #-536813568
>>> +; NO-OPTION-LABEL-NOT: .long
>>> +
>>> +; USE-MOVT-LABEL: {{_?}}foo2
>>> +; USE-MOVT: mov.w      r0, #-536813568
>>> +; USE-MOVT-NOT: .long
>>> +
>>> +; NO-USE-MOVT-LABEL: {{_?}}foo2
>>> +; NO-USE-MOVT: mov.w   r0, #-536813568
>>> +; NO-USE-MOVT-NOT: .long
>>> +define i32 @foo2() {
>>> +  %1 = load i32, i32* inttoptr (i32 -536813568 to i32*) ; load from 0xe000e000
>>> +  ret i32 %1
>>> +}
>>> +
>>> +
>>>   attributes #0 = { "target-features"="+no-movt" }
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>>
>> --
>> Bruno Cardoso Lopes
>> http://www.brunocardoso.cc
>
>

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation



More information about the llvm-commits mailing list