Don't maintain a set of deleted nodes; instead, use a HandleSDNode
[oota-llvm.git] / test / CodeGen / Generic / v-binop-widen2.ll
1 ; RUN: llvm-as < %s | lli
2
3 %vec = type <6 x float>
4
5 define %vec @vecdiv( %vec %p1, %vec %p2)
6 {
7   %result = fdiv %vec %p1, %p2
8   ret %vec %result
9 }
10
11 @a = constant %vec < float 2.0, float 4.0, float 8.0, float 16.0, float 32.0, float 64.0 >
12 @b = constant %vec < float 2.0, float 2.0, float 2.0, float 2.0, float 2.0, float 2.0 >
13
14 ; Expected result: < 1.0, 2.0, 4.0, ..., 2.0^(n-1) >
15 ; main() returns 0 if the result is expected and 1 otherwise
16 define i32 @main() nounwind {
17 entry:
18   %avec = load %vec* @a
19   %bvec = load %vec* @b
20
21   %res = call %vec @vecdiv(%vec %avec, %vec %bvec)
22   br label %loop
23 loop:
24   %idx = phi i32 [0, %entry], [%nextInd, %looptail]
25   %expected = phi float [1.0, %entry], [%nextExpected, %looptail]
26   %elem = extractelement %vec %res, i32 %idx
27   %expcmp = fcmp oeq float %elem, %expected
28   br i1 %expcmp, label %looptail, label %return
29 looptail:
30   %nextExpected = fmul float %expected, 2.0
31   %nextInd = add i32 %idx, 1
32   %cmp = icmp slt i32 %nextInd, 6
33   br i1 %cmp, label %loop, label %return
34 return:
35   %retval = phi i32 [0, %looptail], [1, %loop]
36   ret i32 %retval
37 }