annotate test/CodeGen/Hexagon/float-amode.ll @ 146:3fc4d5c3e21e

set tail call flag for code segment in CGCAll
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 23 Dec 2018 19:23:36 +0900
parents 803732b1fca8
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: llc -march=hexagon -fp-contract=fast -disable-hexagon-peephole -disable-hexagon-amodeopt < %s | FileCheck %s
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
3 ; The test checks for various addressing modes for floating point loads/stores.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
5 %struct.matrix_paramsGlob = type { [50 x i8], i16, [50 x float] }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
6 %struct.matrix_params = type { [50 x i8], i16, float** }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
7 %struct.matrix_params2 = type { i16, [50 x [50 x float]] }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
8
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
9 @globB = common global %struct.matrix_paramsGlob zeroinitializer, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
10 @globA = common global %struct.matrix_paramsGlob zeroinitializer, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
11 @b = common global float 0.000000e+00, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
12 @a = common global float 0.000000e+00, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
13
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
14 ; CHECK-LABEL: test1
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
15 ; CHECK: [[REG11:(r[0-9]+)]] = memw(r{{[0-9]+}}+r{{[0-9]+}}<<#2)
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
16 ; CHECK: [[REG12:(r[0-9]+)]] += sfmpy({{.*}}[[REG11]]
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
17 ; CHECK: memw(r{{[0-9]+}}+r{{[0-9]+}}<<#2) = [[REG12]].new
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
18
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
19 ; Function Attrs: norecurse nounwind
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
20 define void @test1(%struct.matrix_params* nocapture readonly %params, i32 %col1) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
21 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
22 %matrixA = getelementptr inbounds %struct.matrix_params, %struct.matrix_params* %params, i32 0, i32 2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
23 %0 = load float**, float*** %matrixA, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
24 %arrayidx = getelementptr inbounds float*, float** %0, i32 2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
25 %1 = load float*, float** %arrayidx, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
26 %arrayidx1 = getelementptr inbounds float, float* %1, i32 %col1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
27 %2 = load float, float* %arrayidx1, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
28 %mul = fmul float %2, 2.000000e+01
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
29 %add = fadd float %mul, 1.000000e+01
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
30 %arrayidx3 = getelementptr inbounds float*, float** %0, i32 5
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
31 %3 = load float*, float** %arrayidx3, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
32 %arrayidx4 = getelementptr inbounds float, float* %3, i32 %col1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
33 store float %add, float* %arrayidx4, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
34 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
35 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
36
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
37 ; CHECK-LABEL: test2
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
38 ; CHECK: [[REG21:(r[0-9]+)]] = memw(##globB+92)
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
39 ; CHECK: [[REG22:(r[0-9]+)]] = sfadd({{.*}}[[REG21]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
40 ; CHECK: memw(##globA+84) = [[REG22]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
41
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
42 ; Function Attrs: norecurse nounwind
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
43 define void @test2(%struct.matrix_params* nocapture readonly %params, i32 %col1) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
44 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
45 %matrixA = getelementptr inbounds %struct.matrix_params, %struct.matrix_params* %params, i32 0, i32 2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
46 %0 = load float**, float*** %matrixA, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
47 %1 = load float*, float** %0, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
48 %arrayidx1 = getelementptr inbounds float, float* %1, i32 %col1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
49 %2 = load float, float* %arrayidx1, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
50 %3 = load float, float* getelementptr inbounds (%struct.matrix_paramsGlob, %struct.matrix_paramsGlob* @globB, i32 0, i32 2, i32 10), align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
51 %add = fadd float %2, %3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
52 store float %add, float* getelementptr inbounds (%struct.matrix_paramsGlob, %struct.matrix_paramsGlob* @globA, i32 0, i32 2, i32 8), align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
53 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
54 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
55
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
56 ; CHECK-LABEL: test3
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
57 ; CHECK: [[REG31:(r[0-9]+)]] = memw(gp+#b)
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
58 ; CHECK: [[REG32:(r[0-9]+)]] = sfadd({{.*}}[[REG31]]
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
59 ; CHECK: memw(gp+#a) = [[REG32]]
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
60
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
61 ; Function Attrs: norecurse nounwind
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
62 define void @test3(%struct.matrix_params* nocapture readonly %params, i32 %col1) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
63 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
64 %matrixA = getelementptr inbounds %struct.matrix_params, %struct.matrix_params* %params, i32 0, i32 2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
65 %0 = load float**, float*** %matrixA, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
66 %1 = load float*, float** %0, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
67 %arrayidx1 = getelementptr inbounds float, float* %1, i32 %col1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
68 %2 = load float, float* %arrayidx1, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
69 %3 = load float, float* @b, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
70 %add = fadd float %2, %3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
71 store float %add, float* @a, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
72 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
73 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
74
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
75 ; CHECK-LABEL: test4
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
76 ; CHECK: [[REG41:(r[0-9]+)]] = memw(r0<<#2+##globB+52)
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
77 ; CHECK: [[REG42:(r[0-9]+)]] = sfadd({{.*}}[[REG41]]
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
78 ; CHECK: memw(r0<<#2+##globA+60) = [[REG42]]
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
79 ; Function Attrs: noinline norecurse nounwind
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
80 define void @test4(i32 %col1) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
81 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
82 %arrayidx = getelementptr inbounds %struct.matrix_paramsGlob, %struct.matrix_paramsGlob* @globB, i32 0, i32 2, i32 %col1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
83 %0 = load float, float* %arrayidx, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
84 %add = fadd float %0, 0.000000e+00
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
85 %add1 = add nsw i32 %col1, 2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
86 %arrayidx2 = getelementptr inbounds %struct.matrix_paramsGlob, %struct.matrix_paramsGlob* @globA, i32 0, i32 2, i32 %add1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
87 store float %add, float* %arrayidx2, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
88 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
89 }