[llvm] r207969 - Fix test from r207966 and add a comment there.

Michael Zolotukhin mzolotukhin at apple.com
Mon May 5 10:40:00 PDT 2014


Hi Juergen,

I would move it to CodeGen/X86/const-hoisting-large-imm.ll then. Any suggestions/objections for this name?

We already have a test that checks LLVM IR - large-immediate.ll. There we check that constant hoisting didn’t happen. The new case is intended to show why the old behavior is bad - if constant hoisting occur we get much worse code, than just 2 instructions (mov+ret). In future one might ask ‘Why not to allow constant hoisting for shifts?’ and this new test should explain why.

Michael

On May 5, 2014, at 9:18 PM, Juergen Ributzka <juergen at apple.com> wrote:

> HI Michael,
> 
> I would either move this test to the X86 CodeGen test folder or add an additional “opt” test line that checks for the expected/not expected LLVM IR.
> 
> Cheers,
> Juergen
> 
> On May 5, 2014, at 7:46 AM, Michael Zolotukhin <mzolotukhin at apple.com> wrote:
> 
>> Author: mzolotukhin
>> Date: Mon May  5 09:46:53 2014
>> New Revision: 207969
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=207969&view=rev
>> Log:
>> Fix test from r207966 and add a comment there.
>> 
>> Modified:
>>   llvm/trunk/test/Transforms/ConstantHoisting/X86/large-immediate-2.ll
>> 
>> Modified: llvm/trunk/test/Transforms/ConstantHoisting/X86/large-immediate-2.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/ConstantHoisting/X86/large-immediate-2.ll?rev=207969&r1=207968&r2=207969&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/Transforms/ConstantHoisting/X86/large-immediate-2.ll (original)
>> +++ llvm/trunk/test/Transforms/ConstantHoisting/X86/large-immediate-2.ll Mon May  5 09:46:53 2014
>> @@ -1,8 +1,10 @@
>> ; RUN: llc < %s -O3 -march=x86-64 |FileCheck %s
>> define i64 @foo(i1 %z, i192* %p, i192* %q)
>> {
>> -; CHECK: movq    16(%rsi), %rax
>> -; CHECK-NEXT: retq
>> +; If const 128 is hoisted to a variable, then in basic block L_val2 we would
>> +; have %lshr2 = lshr i192 %data2, %const, and the definition of %const would
>> +; be in another basic block. As a result, a very inefficient code might be
>> +; produced. Here we check that this doesn't occur.
>> entry:
>>  %data1 = load i192* %p, align 8
>>  %lshr1 = lshr i192 %data1, 128
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 





More information about the llvm-commits mailing list