blob: 124b267ca280825078608605fdf9a1ee72ce0e1d [file] [log] [blame]
Vikram S. Advebd6161d2003-05-28 13:54:41 +00001;; Date: May 27, 2003.
2;; From: test/Programs/MultiSource/McCat-05-eks/QRfact.c
3;; Function: Matrix QRiterate(Matrix A, Matrix U)
4;;
5;; Error: llc produces an invalid register <NULL VALUE> for the
6;; a boolean value computed using setne with a double.
7;;
8;; Cause: In SparcInstrSelection.cpp, for SetCC, when a result of setne
9;; is used for a branch, it can generate a "branch-on-integer-register"
10;; for integer registers. In that case, it never saves the value of
11;; the boolean result. It was attempting to do the same thing for an
12;; FP compare!
13;;
14;; LLC Output:
15;; !****** Outputing Function: QRiterate_1 ******
16;;
17;; .section ".text"
18;; .align 4
19;; .global QRiterate_1
20;; .type QRiterate_1, 2
21;; QRiterate_1:
22;; .L_QRiterate_1_LL_0:
23;; save %o6, -192, %o6
24;; sethi %hh(LLVMGlobal__2), %o1
25;; sethi %lm(LLVMGlobal__2), %o0
26;; or %o1, %hm(LLVMGlobal__2), %o1
27;; sllx %o1, 32, %o1
28;; or %o0, %o1, %o0
29;; or %o0, %lo(LLVMGlobal__2), %o0
30;; ldd [%o0+0], %f32
31;; ba .L_QRiterate_1_LL_1
32;; fcmpd %fcc0, %f0, %f32
33;;
34;; .L_QRiterate_1_LL_1:
35;; brnz <NULL VALUE>, .L_QRiterate_1_LL_1
36;; nop
37;; ba .L_QRiterate_1_LL_2
38;; nop
39;;
40;; .L_QRiterate_1_LL_2:
41;; jmpl %i7+8, %g0
42;; restore %g0, 0, %g0
43;;
44;; .EndOf_QRiterate_1:
45;; .size QRiterate_1, .EndOf_QRiterate_1-QRiterate_1
46;;
47
48target endian = big
49target pointersize = 64
50
51implementation ; Functions:
52
53internal void %QRiterate(double %tmp.212) {
54entry: ; No predecessors!
55 br label %shortcirc_next.1
56
57shortcirc_next.1: ; preds = %entry
58 %tmp.213 = setne double %tmp.212, 0.000000e+00
59 br bool %tmp.213, label %shortcirc_next.1, label %exit.1
60
61exit.1:
62 ret void
63}