Vikram S. Adve | bd6161d | 2003-05-28 13:54:41 +0000 | [diff] [blame^] | 1 | ;; 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 | |
| 48 | target endian = big |
| 49 | target pointersize = 64 |
| 50 | |
| 51 | implementation ; Functions: |
| 52 | |
| 53 | internal void %QRiterate(double %tmp.212) { |
| 54 | entry: ; No predecessors! |
| 55 | br label %shortcirc_next.1 |
| 56 | |
| 57 | shortcirc_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 | |
| 61 | exit.1: |
| 62 | ret void |
| 63 | } |