aboutsummaryrefslogtreecommitdiffstats
path: root/test/CodeGen/Generic/2003-05-27-phifcmpd.ll
blob: 1561bebaad16ac06508e74ac2acf69b07a8f14d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
;; Date: May 28, 2003.
;; From: test/Programs/MultiSource/McCat-05-eks/QRfact.c
;; Function: Matrix QRiterate(Matrix A, Matrix U)
;; 
;; Error: llc produces an invalid register <NULL VALUE> for the
;;        phi argument %tmp.213 produced by fcmpd:
;; 
;; LLC Output:
;; 
;; !****** Outputing Function: QRiterate_1 ******
;; 
;;         .section ".text"
;;         .align  4
;;         .global QRiterate_1
;;         .type   QRiterate_1, 2
;; QRiterate_1:
;; .L_QRiterate_1_LL_0:
;;         save    %o6, -192, %o6
;;         brgz    %i0, .L_QRiterate_1_LL_1
;;         add     %g0, %g0, %o0
;;         ba      .L_QRiterate_1_LL_2
;;         nop     
;; 
;; .L_QRiterate_1_LL_1:
;;         sethi   %lm(LLVMGlobal__2), %o1
;;         sethi   %hh(LLVMGlobal__2), %o0
;;         or      %o0, %hm(LLVMGlobal__2), %o0
;;         sllx    %o0, 32, %o0
;;         or      %o1, %o0, %o1
;;         or      %o1, %lo(LLVMGlobal__2), %o1
;;         ldd     [%o1+0], %f32
;;         fcmpd   %fcc0, %f2, %f32
;;         ba      .L_QRiterate_1_LL_2
;;         add     <NULL VALUE>, %g0, %o0
;; 
;; .L_QRiterate_1_LL_2:
;;         brnz    %o0, .L_QRiterate_1_LL_1
;;         nop     
;;         ba      .L_QRiterate_1_LL_3
;;         nop     
;;
;; .L_QRiterate_1_LL_3:
;;         jmpl    %i7+8, %g0
;;         restore %g0, 0, %g0
;; 
;; .EndOf_QRiterate_1:
;;         .size QRiterate_1, .EndOf_QRiterate_1-QRiterate_1
;; 


target endian = big
target pointersize = 64

implementation   ; Functions:

internal void %QRiterate(int %p.1, double %tmp.212) { 
entry:          ; No predecessors!
        %tmp.184 = setgt int %p.1, 0            ; <bool> [#uses=1]
        br bool %tmp.184, label %shortcirc_next.1, label %shortcirc_done.1

shortcirc_next.1:               ; preds = %entry
        %tmp.213 = setne double %tmp.212, 0.000000e+00
        br label %shortcirc_done.1

shortcirc_done.1:               ; preds = %entry, %shortcirc_next.1
        %val.1 = phi bool [ false, %entry ], [ %tmp.213, %shortcirc_next.1 ]
        br bool %val.1, label %shortcirc_next.1, label %exit.1

exit.1:
	ret void
}