xref: /aosp_15_r20/external/llvm/test/CodeGen/ARM/cse-libcalls.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=arm | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
4*9880d681SAndroid Build Coastguard Workertarget triple = "i386-apple-darwin8"
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker; Without CSE of libcalls, there are two calls in the output instead of one.
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker; CHECK: bl ___ltdf
9*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: bl ___ltdf
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Workerdefine double @u_f_nonbon(double %lambda) nounwind {
12*9880d681SAndroid Build Coastguard Workerentry:
13*9880d681SAndroid Build Coastguard Worker	%tmp19.i.i = load double, double* null, align 4		; <double> [#uses=2]
14*9880d681SAndroid Build Coastguard Worker	%tmp6.i = fcmp olt double %tmp19.i.i, 1.000000e+00		; <i1> [#uses=1]
15*9880d681SAndroid Build Coastguard Worker	%dielectric.0.i = select i1 %tmp6.i, double 1.000000e+00, double %tmp19.i.i		; <double> [#uses=1]
16*9880d681SAndroid Build Coastguard Worker	%tmp10.i4 = fdiv double 0x4074C2D71F36262D, %dielectric.0.i		; <double> [#uses=1]
17*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb28.i, label %bb508.i
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerbb28.i:		; preds = %bb28.i, %entry
20*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb502.loopexit.i, label %bb28.i
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Workerbb.nph53.i:		; preds = %bb502.loopexit.i
23*9880d681SAndroid Build Coastguard Worker	%tmp354.i = fsub double -0.000000e+00, %tmp10.i4		; <double> [#uses=0]
24*9880d681SAndroid Build Coastguard Worker	br label %bb244.i
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Workerbb244.i:		; preds = %bb244.i, %bb.nph53.i
27*9880d681SAndroid Build Coastguard Worker	br label %bb244.i
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Workerbb502.loopexit.i:		; preds = %bb28.i
30*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb.nph53.i, label %bb508.i
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Workerbb508.i:		; preds = %bb502.loopexit.i, %entry
33*9880d681SAndroid Build Coastguard Worker	ret double %tmp10.i4
34*9880d681SAndroid Build Coastguard Worker}
35