[llvm-commits] [PATCH]: set CR1EQ on PPC32 only when seeing floating var arg
Eric Christopher
echristo at apple.com
Tue Aug 30 10:27:44 PDT 2011
I responded with an OK on the 26th…
-eric
On Aug 30, 2011, at 7:13 AM, Roman Divacky wrote:
> ping^2
>
> On Wed, Aug 24, 2011 at 09:14:34PM +0200, Roman Divacky wrote:
>> Hi,
>>
>> PPC32 formal arguments lowering is slightly broken, it sets CR1EQ bit
>> when the call is a vararg one. It should set the bit only with vararg
>> call that has floating point arguments in registers and unset the
>> bit otherwise. The attached patch fixes that + test.
>>
>> This is normally just an optimization but it's very important in the
>> kernel where doing floating point stuff is lethal.
>>
>> OK to commit?
>>
>> thank you, roman
>
>
>> ; RUN: llc < %s | FileCheck %s
>> ; ModuleID = 'test.c'
>> target datalayout = "E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32"
>> target triple = "powerpc-unknown-freebsd"
>>
>> @.str = private unnamed_addr constant [4 x i8] c"%i\0A\00", align 1
>> @.str1 = private unnamed_addr constant [4 x i8] c"%f\0A\00", align 1
>>
>> define void @foo() nounwind {
>> entry:
>> ; CHECK: crxor 6, 6, 6
>> %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([4 x i8]* @.str, i32 0, i32 0), i32 1)
>> ; CHECK: creqv 6, 6, 6
>> %call1 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([4 x i8]* @.str1, i32 0, i32 0), double 1.100000e+00)
>> ret void
>> }
>>
>> declare i32 @printf(i8*, ...)
>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
> _______________________________________________
> 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