annotate test/Transforms/InstCombine/fast-math-scalarization.ll @ 120:1172e4bd9c6f

update 4.0.0
author mir3636
date Fri, 25 Nov 2016 19:14:25 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
1 ; RUN: opt -instcombine -S < %s | FileCheck %s
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
3 ; CHECK-LABEL: test_scalarize_phi
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
4 ; CHECK: fmul fast float
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
5 define void @test_scalarize_phi(i32 * %n, float * %inout) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
6 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
7 %0 = load volatile float, float * %inout, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
8 %splat.splatinsert = insertelement <4 x float> undef, float %0, i32 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
9 %splat.splat = shufflevector <4 x float> %splat.splatinsert, <4 x float> undef, <4 x i32> zeroinitializer
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
10 %splat.splatinsert1 = insertelement <4 x float> undef, float 3.0, i32 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
11 br label %for.cond
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
12
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
13 for.cond:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
14 %x.0 = phi <4 x float> [ %splat.splat, %entry ], [ %mul, %for.body ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
15 %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.body ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
16 %1 = load i32, i32 * %n, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
17 %cmp = icmp ne i32 %i.0, %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
18 br i1 %cmp, label %for.body, label %for.end
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
19
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
20 for.body:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
21 %2 = extractelement <4 x float> %x.0, i32 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
22 store volatile float %2, float * %inout, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
23 %mul = fmul fast <4 x float> %x.0, <float 0x4002A3D700000000, float 0x4002A3D700000000, float 0x4002A3D700000000, float 0x4002A3D700000000>
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
24 %inc = add nsw i32 %i.0, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
25 br label %for.cond
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
26
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
27 for.end:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
28 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
29 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
30
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
31 ; CHECK-LABEL: test_extract_element_fastmath
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
32 ; CHECK: fadd fast float
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
33 define float @test_extract_element_fastmath(<4 x float> %x) #0 {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
34 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
35 %add = fadd fast <4 x float> %x, <float 0x4002A3D700000000, float 0x4002A3D700000000, float 0x4002A3D700000000, float 0x4002A3D700000000>
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
36 %0 = extractelement <4 x float> %add, i32 2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
37 ret float %0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
38 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
39