1*9880d681SAndroid Build Coastguard Worker; RUN: llc -regalloc=fast -optimize-regalloc=0 -verify-machineinstrs < %s 2*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" 3*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-apple-darwin" 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; This test causes a virtual FP register to be redefined while it is live: 6*9880d681SAndroid Build Coastguard Worker;BB#5: derived from LLVM BB %bb10 7*9880d681SAndroid Build Coastguard Worker; Predecessors according to CFG: BB#4 BB#5 8*9880d681SAndroid Build Coastguard Worker; %reg1024<def> = MOV_Fp8080 %reg1034 9*9880d681SAndroid Build Coastguard Worker; %reg1025<def> = MUL_Fp80m32 %reg1024, %RIP, 1, %reg0, <cp#0>, %reg0; mem:LD4[ConstantPool] 10*9880d681SAndroid Build Coastguard Worker; %reg1034<def> = MOV_Fp8080 %reg1025 11*9880d681SAndroid Build Coastguard Worker; FP_REG_KILL %FP0<imp-def>, %FP1<imp-def>, %FP2<imp-def>, %FP3<imp-def>, %FP4<imp-def>, %FP5<imp-def>, %FP6<imp-def> 12*9880d681SAndroid Build Coastguard Worker; JMP_4 <BB#5> 13*9880d681SAndroid Build Coastguard Worker; Successors according to CFG: BB#5 14*9880d681SAndroid Build Coastguard Worker; 15*9880d681SAndroid Build Coastguard Worker; The X86FP pass needs good kill flags, like on %FP0 representing %reg1034: 16*9880d681SAndroid Build Coastguard Worker;BB#5: derived from LLVM BB %bb10 17*9880d681SAndroid Build Coastguard Worker; Predecessors according to CFG: BB#4 BB#5 18*9880d681SAndroid Build Coastguard Worker; %FP0<def> = LD_Fp80m <fi#3>, 1, %reg0, 0, %reg0; mem:LD10[FixedStack3](align=4) 19*9880d681SAndroid Build Coastguard Worker; %FP1<def> = MOV_Fp8080 %FP0<kill> 20*9880d681SAndroid Build Coastguard Worker; %FP2<def> = MUL_Fp80m32 %FP1, %RIP, 1, %reg0, <cp#0>, %reg0; mem:LD4[ConstantPool] 21*9880d681SAndroid Build Coastguard Worker; %FP0<def> = MOV_Fp8080 %FP2 22*9880d681SAndroid Build Coastguard Worker; ST_FpP80m <fi#3>, 1, %reg0, 0, %reg0, %FP0<kill>; mem:ST10[FixedStack3](align=4) 23*9880d681SAndroid Build Coastguard Worker; ST_FpP80m <fi#4>, 1, %reg0, 0, %reg0, %FP1<kill>; mem:ST10[FixedStack4](align=4) 24*9880d681SAndroid Build Coastguard Worker; ST_FpP80m <fi#5>, 1, %reg0, 0, %reg0, %FP2<kill>; mem:ST10[FixedStack5](align=4) 25*9880d681SAndroid Build Coastguard Worker; FP_REG_KILL %FP0<imp-def>, %FP1<imp-def>, %FP2<imp-def>, %FP3<imp-def>, %FP4<imp-def>, %FP5<imp-def>, %FP6<imp-def> 26*9880d681SAndroid Build Coastguard Worker; JMP_4 <BB#5> 27*9880d681SAndroid Build Coastguard Worker; Successors according to CFG: BB#5 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Workerdefine fastcc i32 @sqlite3AtoF(i8* %z, double* nocapture %pResult) nounwind ssp { 30*9880d681SAndroid Build Coastguard Workerentry: 31*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb2, label %bb1.i.i 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerbb1.i.i: ; preds = %entry 34*9880d681SAndroid Build Coastguard Worker unreachable 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workerbb2: ; preds = %entry 37*9880d681SAndroid Build Coastguard Worker br i1 undef, label %isdigit339.exit11.preheader, label %bb13 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Workerisdigit339.exit11.preheader: ; preds = %bb2 40*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb12, label %bb10 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Workerbb10: ; preds = %bb10, %isdigit339.exit11.preheader 43*9880d681SAndroid Build Coastguard Worker %divisor.041 = phi x86_fp80 [ %0, %bb10 ], [ 0xK3FFF8000000000000000, %isdigit339.exit11.preheader ] ; <x86_fp80> [#uses=1] 44*9880d681SAndroid Build Coastguard Worker %0 = fmul x86_fp80 %divisor.041, 0xK4002A000000000000000 ; <x86_fp80> [#uses=2] 45*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb12, label %bb10 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Workerbb12: ; preds = %bb10, %isdigit339.exit11.preheader 48*9880d681SAndroid Build Coastguard Worker %divisor.0.lcssa = phi x86_fp80 [ 0xK3FFF8000000000000000, %isdigit339.exit11.preheader ], [ %0, %bb10 ] ; <x86_fp80> [#uses=0] 49*9880d681SAndroid Build Coastguard Worker br label %bb13 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Workerbb13: ; preds = %bb12, %bb2 52*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb34, label %bb36 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Workerbb34: ; preds = %bb13 55*9880d681SAndroid Build Coastguard Worker br label %bb36 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Workerbb36: ; preds = %bb34, %bb13 58*9880d681SAndroid Build Coastguard Worker ret i32 undef 59*9880d681SAndroid Build Coastguard Worker} 60