Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Xiph.Org
aom-rav1e
Commits
35486a6b
Commit
35486a6b
authored
Oct 27, 2015
by
Angie Chiang
Browse files
Add iadst16
Change-Id: I093881aacaf9a070f78cc4eea2e8a6ede8a71792
parent
0ca0cc24
Changes
2
Hide whitespace changes
Inline
Side-by-side
vp10/common/vp10_inv_txfm1d.c
View file @
35486a6b
...
...
@@ -878,3 +878,220 @@ void vp10_iadst8_new(const int32_t *input, int32_t *output,
bf1
[
7
]
=
bf0
[
0
];
range_check
(
stage
,
input
,
bf1
,
size
,
stage_range
[
stage
]);
}
void
vp10_iadst16_new
(
const
int32_t
*
input
,
int32_t
*
output
,
const
int8_t
*
cos_bit
,
const
int8_t
*
stage_range
)
{
const
int32_t
size
=
16
;
const
int32_t
*
cospi
;
int32_t
stage
=
0
;
int32_t
*
bf0
,
*
bf1
;
int32_t
step
[
16
];
// stage 0;
range_check
(
stage
,
input
,
input
,
size
,
stage_range
[
stage
]);
// stage 1;
stage
++
;
bf1
=
output
;
bf1
[
0
]
=
input
[
0
];
bf1
[
1
]
=
-
input
[
15
];
bf1
[
2
]
=
-
input
[
7
];
bf1
[
3
]
=
input
[
8
];
bf1
[
4
]
=
-
input
[
3
];
bf1
[
5
]
=
input
[
12
];
bf1
[
6
]
=
input
[
4
];
bf1
[
7
]
=
-
input
[
11
];
bf1
[
8
]
=
-
input
[
1
];
bf1
[
9
]
=
input
[
14
];
bf1
[
10
]
=
input
[
6
];
bf1
[
11
]
=
-
input
[
9
];
bf1
[
12
]
=
input
[
2
];
bf1
[
13
]
=
-
input
[
13
];
bf1
[
14
]
=
-
input
[
5
];
bf1
[
15
]
=
input
[
10
];
range_check
(
stage
,
input
,
bf1
,
size
,
stage_range
[
stage
]);
// stage 2
stage
++
;
cospi
=
cospi_arr
[
cos_bit
[
stage
]
-
cos_bit_min
];
bf0
=
output
;
bf1
=
step
;
bf1
[
0
]
=
bf0
[
0
];
bf1
[
1
]
=
bf0
[
1
];
bf1
[
2
]
=
half_btf
(
cospi
[
32
],
bf0
[
2
],
cospi
[
32
],
bf0
[
3
],
cos_bit
[
stage
]);
bf1
[
3
]
=
half_btf
(
cospi
[
32
],
bf0
[
2
],
-
cospi
[
32
],
bf0
[
3
],
cos_bit
[
stage
]);
bf1
[
4
]
=
bf0
[
4
];
bf1
[
5
]
=
bf0
[
5
];
bf1
[
6
]
=
half_btf
(
cospi
[
32
],
bf0
[
6
],
cospi
[
32
],
bf0
[
7
],
cos_bit
[
stage
]);
bf1
[
7
]
=
half_btf
(
cospi
[
32
],
bf0
[
6
],
-
cospi
[
32
],
bf0
[
7
],
cos_bit
[
stage
]);
bf1
[
8
]
=
bf0
[
8
];
bf1
[
9
]
=
bf0
[
9
];
bf1
[
10
]
=
half_btf
(
cospi
[
32
],
bf0
[
10
],
cospi
[
32
],
bf0
[
11
],
cos_bit
[
stage
]);
bf1
[
11
]
=
half_btf
(
cospi
[
32
],
bf0
[
10
],
-
cospi
[
32
],
bf0
[
11
],
cos_bit
[
stage
]);
bf1
[
12
]
=
bf0
[
12
];
bf1
[
13
]
=
bf0
[
13
];
bf1
[
14
]
=
half_btf
(
cospi
[
32
],
bf0
[
14
],
cospi
[
32
],
bf0
[
15
],
cos_bit
[
stage
]);
bf1
[
15
]
=
half_btf
(
cospi
[
32
],
bf0
[
14
],
-
cospi
[
32
],
bf0
[
15
],
cos_bit
[
stage
]);
range_check
(
stage
,
input
,
bf1
,
size
,
stage_range
[
stage
]);
// stage 3
stage
++
;
cospi
=
cospi_arr
[
cos_bit
[
stage
]
-
cos_bit_min
];
bf0
=
step
;
bf1
=
output
;
bf1
[
0
]
=
bf0
[
0
]
+
bf0
[
2
];
bf1
[
1
]
=
bf0
[
1
]
+
bf0
[
3
];
bf1
[
2
]
=
bf0
[
0
]
-
bf0
[
2
];
bf1
[
3
]
=
bf0
[
1
]
-
bf0
[
3
];
bf1
[
4
]
=
bf0
[
4
]
+
bf0
[
6
];
bf1
[
5
]
=
bf0
[
5
]
+
bf0
[
7
];
bf1
[
6
]
=
bf0
[
4
]
-
bf0
[
6
];
bf1
[
7
]
=
bf0
[
5
]
-
bf0
[
7
];
bf1
[
8
]
=
bf0
[
8
]
+
bf0
[
10
];
bf1
[
9
]
=
bf0
[
9
]
+
bf0
[
11
];
bf1
[
10
]
=
bf0
[
8
]
-
bf0
[
10
];
bf1
[
11
]
=
bf0
[
9
]
-
bf0
[
11
];
bf1
[
12
]
=
bf0
[
12
]
+
bf0
[
14
];
bf1
[
13
]
=
bf0
[
13
]
+
bf0
[
15
];
bf1
[
14
]
=
bf0
[
12
]
-
bf0
[
14
];
bf1
[
15
]
=
bf0
[
13
]
-
bf0
[
15
];
range_check
(
stage
,
input
,
bf1
,
size
,
stage_range
[
stage
]);
// stage 4
stage
++
;
cospi
=
cospi_arr
[
cos_bit
[
stage
]
-
cos_bit_min
];
bf0
=
output
;
bf1
=
step
;
bf1
[
0
]
=
bf0
[
0
];
bf1
[
1
]
=
bf0
[
1
];
bf1
[
2
]
=
bf0
[
2
];
bf1
[
3
]
=
bf0
[
3
];
bf1
[
4
]
=
half_btf
(
cospi
[
16
],
bf0
[
4
],
cospi
[
48
],
bf0
[
5
],
cos_bit
[
stage
]);
bf1
[
5
]
=
half_btf
(
cospi
[
48
],
bf0
[
4
],
-
cospi
[
16
],
bf0
[
5
],
cos_bit
[
stage
]);
bf1
[
6
]
=
half_btf
(
-
cospi
[
48
],
bf0
[
6
],
cospi
[
16
],
bf0
[
7
],
cos_bit
[
stage
]);
bf1
[
7
]
=
half_btf
(
cospi
[
16
],
bf0
[
6
],
cospi
[
48
],
bf0
[
7
],
cos_bit
[
stage
]);
bf1
[
8
]
=
bf0
[
8
];
bf1
[
9
]
=
bf0
[
9
];
bf1
[
10
]
=
bf0
[
10
];
bf1
[
11
]
=
bf0
[
11
];
bf1
[
12
]
=
half_btf
(
cospi
[
16
],
bf0
[
12
],
cospi
[
48
],
bf0
[
13
],
cos_bit
[
stage
]);
bf1
[
13
]
=
half_btf
(
cospi
[
48
],
bf0
[
12
],
-
cospi
[
16
],
bf0
[
13
],
cos_bit
[
stage
]);
bf1
[
14
]
=
half_btf
(
-
cospi
[
48
],
bf0
[
14
],
cospi
[
16
],
bf0
[
15
],
cos_bit
[
stage
]);
bf1
[
15
]
=
half_btf
(
cospi
[
16
],
bf0
[
14
],
cospi
[
48
],
bf0
[
15
],
cos_bit
[
stage
]);
range_check
(
stage
,
input
,
bf1
,
size
,
stage_range
[
stage
]);
// stage 5
stage
++
;
cospi
=
cospi_arr
[
cos_bit
[
stage
]
-
cos_bit_min
];
bf0
=
step
;
bf1
=
output
;
bf1
[
0
]
=
bf0
[
0
]
+
bf0
[
4
];
bf1
[
1
]
=
bf0
[
1
]
+
bf0
[
5
];
bf1
[
2
]
=
bf0
[
2
]
+
bf0
[
6
];
bf1
[
3
]
=
bf0
[
3
]
+
bf0
[
7
];
bf1
[
4
]
=
bf0
[
0
]
-
bf0
[
4
];
bf1
[
5
]
=
bf0
[
1
]
-
bf0
[
5
];
bf1
[
6
]
=
bf0
[
2
]
-
bf0
[
6
];
bf1
[
7
]
=
bf0
[
3
]
-
bf0
[
7
];
bf1
[
8
]
=
bf0
[
8
]
+
bf0
[
12
];
bf1
[
9
]
=
bf0
[
9
]
+
bf0
[
13
];
bf1
[
10
]
=
bf0
[
10
]
+
bf0
[
14
];
bf1
[
11
]
=
bf0
[
11
]
+
bf0
[
15
];
bf1
[
12
]
=
bf0
[
8
]
-
bf0
[
12
];
bf1
[
13
]
=
bf0
[
9
]
-
bf0
[
13
];
bf1
[
14
]
=
bf0
[
10
]
-
bf0
[
14
];
bf1
[
15
]
=
bf0
[
11
]
-
bf0
[
15
];
range_check
(
stage
,
input
,
bf1
,
size
,
stage_range
[
stage
]);
// stage 6
stage
++
;
cospi
=
cospi_arr
[
cos_bit
[
stage
]
-
cos_bit_min
];
bf0
=
output
;
bf1
=
step
;
bf1
[
0
]
=
bf0
[
0
];
bf1
[
1
]
=
bf0
[
1
];
bf1
[
2
]
=
bf0
[
2
];
bf1
[
3
]
=
bf0
[
3
];
bf1
[
4
]
=
bf0
[
4
];
bf1
[
5
]
=
bf0
[
5
];
bf1
[
6
]
=
bf0
[
6
];
bf1
[
7
]
=
bf0
[
7
];
bf1
[
8
]
=
half_btf
(
cospi
[
8
],
bf0
[
8
],
cospi
[
56
],
bf0
[
9
],
cos_bit
[
stage
]);
bf1
[
9
]
=
half_btf
(
cospi
[
56
],
bf0
[
8
],
-
cospi
[
8
],
bf0
[
9
],
cos_bit
[
stage
]);
bf1
[
10
]
=
half_btf
(
cospi
[
40
],
bf0
[
10
],
cospi
[
24
],
bf0
[
11
],
cos_bit
[
stage
]);
bf1
[
11
]
=
half_btf
(
cospi
[
24
],
bf0
[
10
],
-
cospi
[
40
],
bf0
[
11
],
cos_bit
[
stage
]);
bf1
[
12
]
=
half_btf
(
-
cospi
[
56
],
bf0
[
12
],
cospi
[
8
],
bf0
[
13
],
cos_bit
[
stage
]);
bf1
[
13
]
=
half_btf
(
cospi
[
8
],
bf0
[
12
],
cospi
[
56
],
bf0
[
13
],
cos_bit
[
stage
]);
bf1
[
14
]
=
half_btf
(
-
cospi
[
24
],
bf0
[
14
],
cospi
[
40
],
bf0
[
15
],
cos_bit
[
stage
]);
bf1
[
15
]
=
half_btf
(
cospi
[
40
],
bf0
[
14
],
cospi
[
24
],
bf0
[
15
],
cos_bit
[
stage
]);
range_check
(
stage
,
input
,
bf1
,
size
,
stage_range
[
stage
]);
// stage 7
stage
++
;
cospi
=
cospi_arr
[
cos_bit
[
stage
]
-
cos_bit_min
];
bf0
=
step
;
bf1
=
output
;
bf1
[
0
]
=
bf0
[
0
]
+
bf0
[
8
];
bf1
[
1
]
=
bf0
[
1
]
+
bf0
[
9
];
bf1
[
2
]
=
bf0
[
2
]
+
bf0
[
10
];
bf1
[
3
]
=
bf0
[
3
]
+
bf0
[
11
];
bf1
[
4
]
=
bf0
[
4
]
+
bf0
[
12
];
bf1
[
5
]
=
bf0
[
5
]
+
bf0
[
13
];
bf1
[
6
]
=
bf0
[
6
]
+
bf0
[
14
];
bf1
[
7
]
=
bf0
[
7
]
+
bf0
[
15
];
bf1
[
8
]
=
bf0
[
0
]
-
bf0
[
8
];
bf1
[
9
]
=
bf0
[
1
]
-
bf0
[
9
];
bf1
[
10
]
=
bf0
[
2
]
-
bf0
[
10
];
bf1
[
11
]
=
bf0
[
3
]
-
bf0
[
11
];
bf1
[
12
]
=
bf0
[
4
]
-
bf0
[
12
];
bf1
[
13
]
=
bf0
[
5
]
-
bf0
[
13
];
bf1
[
14
]
=
bf0
[
6
]
-
bf0
[
14
];
bf1
[
15
]
=
bf0
[
7
]
-
bf0
[
15
];
range_check
(
stage
,
input
,
bf1
,
size
,
stage_range
[
stage
]);
// stage 8
stage
++
;
cospi
=
cospi_arr
[
cos_bit
[
stage
]
-
cos_bit_min
];
bf0
=
output
;
bf1
=
step
;
bf1
[
0
]
=
half_btf
(
cospi
[
2
],
bf0
[
0
],
cospi
[
62
],
bf0
[
1
],
cos_bit
[
stage
]);
bf1
[
1
]
=
half_btf
(
cospi
[
62
],
bf0
[
0
],
-
cospi
[
2
],
bf0
[
1
],
cos_bit
[
stage
]);
bf1
[
2
]
=
half_btf
(
cospi
[
10
],
bf0
[
2
],
cospi
[
54
],
bf0
[
3
],
cos_bit
[
stage
]);
bf1
[
3
]
=
half_btf
(
cospi
[
54
],
bf0
[
2
],
-
cospi
[
10
],
bf0
[
3
],
cos_bit
[
stage
]);
bf1
[
4
]
=
half_btf
(
cospi
[
18
],
bf0
[
4
],
cospi
[
46
],
bf0
[
5
],
cos_bit
[
stage
]);
bf1
[
5
]
=
half_btf
(
cospi
[
46
],
bf0
[
4
],
-
cospi
[
18
],
bf0
[
5
],
cos_bit
[
stage
]);
bf1
[
6
]
=
half_btf
(
cospi
[
26
],
bf0
[
6
],
cospi
[
38
],
bf0
[
7
],
cos_bit
[
stage
]);
bf1
[
7
]
=
half_btf
(
cospi
[
38
],
bf0
[
6
],
-
cospi
[
26
],
bf0
[
7
],
cos_bit
[
stage
]);
bf1
[
8
]
=
half_btf
(
cospi
[
34
],
bf0
[
8
],
cospi
[
30
],
bf0
[
9
],
cos_bit
[
stage
]);
bf1
[
9
]
=
half_btf
(
cospi
[
30
],
bf0
[
8
],
-
cospi
[
34
],
bf0
[
9
],
cos_bit
[
stage
]);
bf1
[
10
]
=
half_btf
(
cospi
[
42
],
bf0
[
10
],
cospi
[
22
],
bf0
[
11
],
cos_bit
[
stage
]);
bf1
[
11
]
=
half_btf
(
cospi
[
22
],
bf0
[
10
],
-
cospi
[
42
],
bf0
[
11
],
cos_bit
[
stage
]);
bf1
[
12
]
=
half_btf
(
cospi
[
50
],
bf0
[
12
],
cospi
[
14
],
bf0
[
13
],
cos_bit
[
stage
]);
bf1
[
13
]
=
half_btf
(
cospi
[
14
],
bf0
[
12
],
-
cospi
[
50
],
bf0
[
13
],
cos_bit
[
stage
]);
bf1
[
14
]
=
half_btf
(
cospi
[
58
],
bf0
[
14
],
cospi
[
6
],
bf0
[
15
],
cos_bit
[
stage
]);
bf1
[
15
]
=
half_btf
(
cospi
[
6
],
bf0
[
14
],
-
cospi
[
58
],
bf0
[
15
],
cos_bit
[
stage
]);
range_check
(
stage
,
input
,
bf1
,
size
,
stage_range
[
stage
]);
// stage 9
stage
++
;
bf0
=
step
;
bf1
=
output
;
bf1
[
0
]
=
bf0
[
1
];
bf1
[
1
]
=
bf0
[
14
];
bf1
[
2
]
=
bf0
[
3
];
bf1
[
3
]
=
bf0
[
12
];
bf1
[
4
]
=
bf0
[
5
];
bf1
[
5
]
=
bf0
[
10
];
bf1
[
6
]
=
bf0
[
7
];
bf1
[
7
]
=
bf0
[
8
];
bf1
[
8
]
=
bf0
[
9
];
bf1
[
9
]
=
bf0
[
6
];
bf1
[
10
]
=
bf0
[
11
];
bf1
[
11
]
=
bf0
[
4
];
bf1
[
12
]
=
bf0
[
13
];
bf1
[
13
]
=
bf0
[
2
];
bf1
[
14
]
=
bf0
[
15
];
bf1
[
15
]
=
bf0
[
0
];
range_check
(
stage
,
input
,
bf1
,
size
,
stage_range
[
stage
]);
}
vp10/common/vp10_inv_txfm1d.h
View file @
35486a6b
...
...
@@ -30,6 +30,8 @@ void vp10_iadst4_new(const int32_t *input, int32_t *output,
const
int8_t
*
cos_bit
,
const
int8_t
*
stage_range
);
void
vp10_iadst8_new
(
const
int32_t
*
input
,
int32_t
*
output
,
const
int8_t
*
cos_bit
,
const
int8_t
*
stage_range
);
void
vp10_iadst16_new
(
const
int32_t
*
input
,
int32_t
*
output
,
const
int8_t
*
cos_bit
,
const
int8_t
*
stage_range
);
#ifdef __cplusplus
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment