Add capability to represent volatile AliasSet's
[oota-llvm.git] / test / LLC / 2003-05-27-phifcmpd.ll
1 ;; Date: May 28, 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 ;;        phi argument %tmp.213 produced by fcmpd:
7 ;; 
8 ;; LLC Output:
9 ;; 
10 ;; !****** Outputing Function: QRiterate_1 ******
11 ;; 
12 ;;         .section ".text"
13 ;;         .align  4
14 ;;         .global QRiterate_1
15 ;;         .type   QRiterate_1, 2
16 ;; QRiterate_1:
17 ;; .L_QRiterate_1_LL_0:
18 ;;         save    %o6, -192, %o6
19 ;;         brgz    %i0, .L_QRiterate_1_LL_1
20 ;;         add     %g0, %g0, %o0
21 ;;         ba      .L_QRiterate_1_LL_2
22 ;;         nop     
23 ;; 
24 ;; .L_QRiterate_1_LL_1:
25 ;;         sethi   %lm(LLVMGlobal__2), %o1
26 ;;         sethi   %hh(LLVMGlobal__2), %o0
27 ;;         or      %o0, %hm(LLVMGlobal__2), %o0
28 ;;         sllx    %o0, 32, %o0
29 ;;         or      %o1, %o0, %o1
30 ;;         or      %o1, %lo(LLVMGlobal__2), %o1
31 ;;         ldd     [%o1+0], %f32
32 ;;         fcmpd   %fcc0, %f2, %f32
33 ;;         ba      .L_QRiterate_1_LL_2
34 ;;         add     <NULL VALUE>, %g0, %o0
35 ;; 
36 ;; .L_QRiterate_1_LL_2:
37 ;;         brnz    %o0, .L_QRiterate_1_LL_1
38 ;;         nop     
39 ;;         ba      .L_QRiterate_1_LL_3
40 ;;         nop     
41 ;;
42 ;; .L_QRiterate_1_LL_3:
43 ;;         jmpl    %i7+8, %g0
44 ;;         restore %g0, 0, %g0
45 ;; 
46 ;; .EndOf_QRiterate_1:
47 ;;         .size QRiterate_1, .EndOf_QRiterate_1-QRiterate_1
48 ;; 
49
50
51 target endian = big
52 target pointersize = 64
53
54 implementation   ; Functions:
55
56 internal void %QRiterate(int %p.1, double %tmp.212) { 
57 entry:          ; No predecessors!
58         %tmp.184 = setgt int %p.1, 0            ; <bool> [#uses=1]
59         br bool %tmp.184, label %shortcirc_next.1, label %shortcirc_done.1
60
61 shortcirc_next.1:               ; preds = %entry
62         %tmp.213 = setne double %tmp.212, 0.000000e+00
63         br label %shortcirc_done.1
64
65 shortcirc_done.1:               ; preds = %entry, %shortcirc_next.1
66         %val.1 = phi bool [ false, %entry ], [ %tmp.213, %shortcirc_next.1 ]
67         br bool %val.1, label %shortcirc_next.1, label %exit.1
68
69 exit.1:
70         ret void
71 }