Mercurial > hg > CbC > CbC_llvm
comparison test/CodeGen/SystemZ/fp-mul-08.ll @ 95:afa8332a0e37 LLVM3.8
LLVM 3.8
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 13 Oct 2015 17:48:58 +0900 |
parents | 95c75e76d11b |
children | 803732b1fca8 |
comparison
equal
deleted
inserted
replaced
84:f3e34b893a5f | 95:afa8332a0e37 |
---|---|
15 define float @f2(float %f1, float *%ptr, float %acc) { | 15 define float @f2(float %f1, float *%ptr, float %acc) { |
16 ; CHECK-LABEL: f2: | 16 ; CHECK-LABEL: f2: |
17 ; CHECK: mseb %f2, %f0, 0(%r2) | 17 ; CHECK: mseb %f2, %f0, 0(%r2) |
18 ; CHECK: ler %f0, %f2 | 18 ; CHECK: ler %f0, %f2 |
19 ; CHECK: br %r14 | 19 ; CHECK: br %r14 |
20 %f2 = load float *%ptr | 20 %f2 = load float , float *%ptr |
21 %negacc = fsub float -0.0, %acc | 21 %negacc = fsub float -0.0, %acc |
22 %res = call float @llvm.fma.f32 (float %f1, float %f2, float %negacc) | 22 %res = call float @llvm.fma.f32 (float %f1, float %f2, float %negacc) |
23 ret float %res | 23 ret float %res |
24 } | 24 } |
25 | 25 |
26 define float @f3(float %f1, float *%base, float %acc) { | 26 define float @f3(float %f1, float *%base, float %acc) { |
27 ; CHECK-LABEL: f3: | 27 ; CHECK-LABEL: f3: |
28 ; CHECK: mseb %f2, %f0, 4092(%r2) | 28 ; CHECK: mseb %f2, %f0, 4092(%r2) |
29 ; CHECK: ler %f0, %f2 | 29 ; CHECK: ler %f0, %f2 |
30 ; CHECK: br %r14 | 30 ; CHECK: br %r14 |
31 %ptr = getelementptr float *%base, i64 1023 | 31 %ptr = getelementptr float, float *%base, i64 1023 |
32 %f2 = load float *%ptr | 32 %f2 = load float , float *%ptr |
33 %negacc = fsub float -0.0, %acc | 33 %negacc = fsub float -0.0, %acc |
34 %res = call float @llvm.fma.f32 (float %f1, float %f2, float %negacc) | 34 %res = call float @llvm.fma.f32 (float %f1, float %f2, float %negacc) |
35 ret float %res | 35 ret float %res |
36 } | 36 } |
37 | 37 |
42 ; CHECK-LABEL: f4: | 42 ; CHECK-LABEL: f4: |
43 ; CHECK: aghi %r2, 4096 | 43 ; CHECK: aghi %r2, 4096 |
44 ; CHECK: mseb %f2, %f0, 0(%r2) | 44 ; CHECK: mseb %f2, %f0, 0(%r2) |
45 ; CHECK: ler %f0, %f2 | 45 ; CHECK: ler %f0, %f2 |
46 ; CHECK: br %r14 | 46 ; CHECK: br %r14 |
47 %ptr = getelementptr float *%base, i64 1024 | 47 %ptr = getelementptr float, float *%base, i64 1024 |
48 %f2 = load float *%ptr | 48 %f2 = load float , float *%ptr |
49 %negacc = fsub float -0.0, %acc | 49 %negacc = fsub float -0.0, %acc |
50 %res = call float @llvm.fma.f32 (float %f1, float %f2, float %negacc) | 50 %res = call float @llvm.fma.f32 (float %f1, float %f2, float %negacc) |
51 ret float %res | 51 ret float %res |
52 } | 52 } |
53 | 53 |
58 ; CHECK-LABEL: f5: | 58 ; CHECK-LABEL: f5: |
59 ; CHECK: aghi %r2, -4 | 59 ; CHECK: aghi %r2, -4 |
60 ; CHECK: mseb %f2, %f0, 0(%r2) | 60 ; CHECK: mseb %f2, %f0, 0(%r2) |
61 ; CHECK: ler %f0, %f2 | 61 ; CHECK: ler %f0, %f2 |
62 ; CHECK: br %r14 | 62 ; CHECK: br %r14 |
63 %ptr = getelementptr float *%base, i64 -1 | 63 %ptr = getelementptr float, float *%base, i64 -1 |
64 %f2 = load float *%ptr | 64 %f2 = load float , float *%ptr |
65 %negacc = fsub float -0.0, %acc | 65 %negacc = fsub float -0.0, %acc |
66 %res = call float @llvm.fma.f32 (float %f1, float %f2, float %negacc) | 66 %res = call float @llvm.fma.f32 (float %f1, float %f2, float %negacc) |
67 ret float %res | 67 ret float %res |
68 } | 68 } |
69 | 69 |
71 ; CHECK-LABEL: f6: | 71 ; CHECK-LABEL: f6: |
72 ; CHECK: sllg %r1, %r3, 2 | 72 ; CHECK: sllg %r1, %r3, 2 |
73 ; CHECK: mseb %f2, %f0, 0(%r1,%r2) | 73 ; CHECK: mseb %f2, %f0, 0(%r1,%r2) |
74 ; CHECK: ler %f0, %f2 | 74 ; CHECK: ler %f0, %f2 |
75 ; CHECK: br %r14 | 75 ; CHECK: br %r14 |
76 %ptr = getelementptr float *%base, i64 %index | 76 %ptr = getelementptr float, float *%base, i64 %index |
77 %f2 = load float *%ptr | 77 %f2 = load float , float *%ptr |
78 %negacc = fsub float -0.0, %acc | 78 %negacc = fsub float -0.0, %acc |
79 %res = call float @llvm.fma.f32 (float %f1, float %f2, float %negacc) | 79 %res = call float @llvm.fma.f32 (float %f1, float %f2, float %negacc) |
80 ret float %res | 80 ret float %res |
81 } | 81 } |
82 | 82 |
85 ; CHECK: sllg %r1, %r3, 2 | 85 ; CHECK: sllg %r1, %r3, 2 |
86 ; CHECK: mseb %f2, %f0, 4092({{%r1,%r2|%r2,%r1}}) | 86 ; CHECK: mseb %f2, %f0, 4092({{%r1,%r2|%r2,%r1}}) |
87 ; CHECK: ler %f0, %f2 | 87 ; CHECK: ler %f0, %f2 |
88 ; CHECK: br %r14 | 88 ; CHECK: br %r14 |
89 %index2 = add i64 %index, 1023 | 89 %index2 = add i64 %index, 1023 |
90 %ptr = getelementptr float *%base, i64 %index2 | 90 %ptr = getelementptr float, float *%base, i64 %index2 |
91 %f2 = load float *%ptr | 91 %f2 = load float , float *%ptr |
92 %negacc = fsub float -0.0, %acc | 92 %negacc = fsub float -0.0, %acc |
93 %res = call float @llvm.fma.f32 (float %f1, float %f2, float %negacc) | 93 %res = call float @llvm.fma.f32 (float %f1, float %f2, float %negacc) |
94 ret float %res | 94 ret float %res |
95 } | 95 } |
96 | 96 |
100 ; CHECK: lay %r1, 4096({{%r1,%r2|%r2,%r1}}) | 100 ; CHECK: lay %r1, 4096({{%r1,%r2|%r2,%r1}}) |
101 ; CHECK: mseb %f2, %f0, 0(%r1) | 101 ; CHECK: mseb %f2, %f0, 0(%r1) |
102 ; CHECK: ler %f0, %f2 | 102 ; CHECK: ler %f0, %f2 |
103 ; CHECK: br %r14 | 103 ; CHECK: br %r14 |
104 %index2 = add i64 %index, 1024 | 104 %index2 = add i64 %index, 1024 |
105 %ptr = getelementptr float *%base, i64 %index2 | 105 %ptr = getelementptr float, float *%base, i64 %index2 |
106 %f2 = load float *%ptr | 106 %f2 = load float , float *%ptr |
107 %negacc = fsub float -0.0, %acc | 107 %negacc = fsub float -0.0, %acc |
108 %res = call float @llvm.fma.f32 (float %f1, float %f2, float %negacc) | 108 %res = call float @llvm.fma.f32 (float %f1, float %f2, float %negacc) |
109 ret float %res | 109 ret float %res |
110 } | 110 } |