1c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org/* 2c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 3c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org * 4c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org * Use of this source code is governed by a BSD-style license 5c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org * that can be found in the LICENSE file in the root of the source 6c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org * tree. An additional intellectual property rights grant can be found 7c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org * in the file PATENTS. All contributing project authors may 8c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org */ 10c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 11c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org#include "webrtc/modules/audio_processing/aec/aec_rdft.h" 12c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org#include "webrtc/typedefs.h" 13c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 14a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.orgstatic void bitrv2_128_mips(float* a) { 15c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org // n is 128 16c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org float xr, xi, yr, yi; 17c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 18c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[8]; 19c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[9]; 20c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[16]; 21c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[17]; 22c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[8] = yr; 23c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[9] = yi; 24c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[16] = xr; 25c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[17] = xi; 26c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 27c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[64]; 28c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[65]; 29c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[2]; 30c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[3]; 31c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[64] = yr; 32c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[65] = yi; 33c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[2] = xr; 34c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[3] = xi; 35c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 36c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[72]; 37c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[73]; 38c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[18]; 39c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[19]; 40c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[72] = yr; 41c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[73] = yi; 42c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[18] = xr; 43c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[19] = xi; 44c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 45c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[80]; 46c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[81]; 47c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[10]; 48c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[11]; 49c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[80] = yr; 50c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[81] = yi; 51c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[10] = xr; 52c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[11] = xi; 53c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 54c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[88]; 55c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[89]; 56c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[26]; 57c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[27]; 58c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[88] = yr; 59c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[89] = yi; 60c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[26] = xr; 61c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[27] = xi; 62c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 63c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[74]; 64c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[75]; 65c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[82]; 66c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[83]; 67c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[74] = yr; 68c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[75] = yi; 69c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[82] = xr; 70c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[83] = xi; 71c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 72c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[32]; 73c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[33]; 74c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[4]; 75c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[5]; 76c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[32] = yr; 77c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[33] = yi; 78c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[4] = xr; 79c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[5] = xi; 80c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 81c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[40]; 82c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[41]; 83c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[20]; 84c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[21]; 85c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[40] = yr; 86c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[41] = yi; 87c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[20] = xr; 88c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[21] = xi; 89c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 90c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[48]; 91c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[49]; 92c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[12]; 93c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[13]; 94c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[48] = yr; 95c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[49] = yi; 96c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[12] = xr; 97c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[13] = xi; 98c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 99c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[56]; 100c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[57]; 101c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[28]; 102c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[29]; 103c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[56] = yr; 104c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[57] = yi; 105c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[28] = xr; 106c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[29] = xi; 107c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 108c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[34]; 109c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[35]; 110c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[68]; 111c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[69]; 112c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[34] = yr; 113c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[35] = yi; 114c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[68] = xr; 115c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[69] = xi; 116c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 117c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[42]; 118c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[43]; 119c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[84]; 120c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[85]; 121c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[42] = yr; 122c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[43] = yi; 123c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[84] = xr; 124c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[85] = xi; 125c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 126c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[50]; 127c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[51]; 128c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[76]; 129c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[77]; 130c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[50] = yr; 131c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[51] = yi; 132c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[76] = xr; 133c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[77] = xi; 134c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 135c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[58]; 136c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[59]; 137c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[92]; 138c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[93]; 139c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[58] = yr; 140c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[59] = yi; 141c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[92] = xr; 142c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[93] = xi; 143c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 144c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[44]; 145c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[45]; 146c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[52]; 147c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[53]; 148c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[44] = yr; 149c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[45] = yi; 150c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[52] = xr; 151c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[53] = xi; 152c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 153c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[96]; 154c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[97]; 155c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[6]; 156c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[7]; 157c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[96] = yr; 158c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[97] = yi; 159c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[6] = xr; 160c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[7] = xi; 161c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 162c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[104]; 163c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[105]; 164c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[22]; 165c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[23]; 166c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[104] = yr; 167c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[105] = yi; 168c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[22] = xr; 169c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[23] = xi; 170c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 171c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[112]; 172c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[113]; 173c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[14]; 174c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[15]; 175c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[112] = yr; 176c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[113] = yi; 177c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[14] = xr; 178c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[15] = xi; 179c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 180c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[120]; 181c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[121]; 182c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[30]; 183c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[31]; 184c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[120] = yr; 185c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[121] = yi; 186c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[30] = xr; 187c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[31] = xi; 188c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 189c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[98]; 190c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[99]; 191c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[70]; 192c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[71]; 193c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[98] = yr; 194c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[99] = yi; 195c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[70] = xr; 196c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[71] = xi; 197c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 198c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[106]; 199c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[107]; 200c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[86]; 201c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[87]; 202c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[106] = yr; 203c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[107] = yi; 204c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[86] = xr; 205c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[87] = xi; 206c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 207c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[114]; 208c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[115]; 209c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[78]; 210c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[79]; 211c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[114] = yr; 212c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[115] = yi; 213c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[78] = xr; 214c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[79] = xi; 215c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 216c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[122]; 217c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[123]; 218c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[94]; 219c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[95]; 220c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[122] = yr; 221c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[123] = yi; 222c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[94] = xr; 223c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[95] = xi; 224c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 225c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[100]; 226c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[101]; 227c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[38]; 228c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[39]; 229c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[100] = yr; 230c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[101] = yi; 231c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[38] = xr; 232c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[39] = xi; 233c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 234c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[108]; 235c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[109]; 236c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[54]; 237c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[55]; 238c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[108] = yr; 239c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[109] = yi; 240c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[54] = xr; 241c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[55] = xi; 242c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 243c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[116]; 244c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[117]; 245c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[46]; 246c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[47]; 247c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[116] = yr; 248c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[117] = yi; 249c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[46] = xr; 250c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[47] = xi; 251c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 252c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[124]; 253c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[125]; 254c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[62]; 255c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[63]; 256c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[124] = yr; 257c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[125] = yi; 258c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[62] = xr; 259c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[63] = xi; 260c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 261c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xr = a[110]; 262c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org xi = a[111]; 263c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yr = a[118]; 264c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org yi = a[119]; 265c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[110] = yr; 266c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[111] = yi; 267c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[118] = xr; 268c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org a[119] = xi; 269c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org} 270c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 271a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.orgstatic void cft1st_128_mips(float* a) { 272a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org float f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14; 273a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org int a_ptr, p1_rdft, p2_rdft, count; 274db75a66b0fa7f3a734206aa339ca598924c48d42andrew@webrtc.org const float* first = rdft_wk3ri_first; 275db75a66b0fa7f3a734206aa339ca598924c48d42andrew@webrtc.org const float* second = rdft_wk3ri_second; 276a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org 277a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org __asm __volatile ( 278a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set push \n\t" 279a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set noreorder \n\t" 280a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org // first 8 281a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f0], 0(%[a]) \n\t" 282a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f1], 4(%[a]) \n\t" 283a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f2], 8(%[a]) \n\t" 284a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f3], 12(%[a]) \n\t" 285a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f4], 16(%[a]) \n\t" 286a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f5], 20(%[a]) \n\t" 287a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f6], 24(%[a]) \n\t" 288a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f7], 28(%[a]) \n\t" 289a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f0], %[f2] \n\t" 290a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f0], %[f0], %[f2] \n\t" 291a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f4], %[f6] \n\t" 292a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f4], %[f6] \n\t" 293a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f6], %[f1], %[f3] \n\t" 294a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f3] \n\t" 295a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f3], %[f5], %[f7] \n\t" 296a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f5], %[f5], %[f7] \n\t" 297a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f7], %[f8], %[f2] \n\t" 298a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f8], %[f8], %[f2] \n\t" 299a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f2], %[f1], %[f4] \n\t" 300a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f1], %[f1], %[f4] \n\t" 301a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f4], %[f6], %[f3] \n\t" 302a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f6], %[f6], %[f3] \n\t" 303a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f3], %[f0], %[f5] \n\t" 304a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f0], %[f0], %[f5] \n\t" 305a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f7], 0(%[a]) \n\t" 306a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f8], 16(%[a]) \n\t" 307a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 28(%[a]) \n\t" 308a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f1], 12(%[a]) \n\t" 309a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f4], 4(%[a]) \n\t" 310a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f6], 20(%[a]) \n\t" 311a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f3], 8(%[a]) \n\t" 312a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f0], 24(%[a]) \n\t" 313a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org // second 8 314a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f0], 32(%[a]) \n\t" 315a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f1], 36(%[a]) \n\t" 316a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f2], 40(%[a]) \n\t" 317a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f3], 44(%[a]) \n\t" 318a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f4], 48(%[a]) \n\t" 319a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f5], 52(%[a]) \n\t" 320a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f6], 56(%[a]) \n\t" 321a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f7], 60(%[a]) \n\t" 322a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f4], %[f6] \n\t" 323a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f4], %[f6] \n\t" 324a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f6], %[f1], %[f3] \n\t" 325a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f3] \n\t" 326a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f3], %[f0], %[f2] \n\t" 327a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f0], %[f0], %[f2] \n\t" 328a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f5], %[f7] \n\t" 329a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f5], %[f5], %[f7] \n\t" 330a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f7], %[f4], %[f1] \n\t" 331a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f4], %[f1] \n\t" 332a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f1], %[f3], %[f8] \n\t" 333a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f3], %[f3], %[f8] \n\t" 334a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f8], %[f0], %[f5] \n\t" 335a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f0], %[f0], %[f5] \n\t" 336a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f5], %[f6], %[f2] \n\t" 337a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f6], %[f2], %[f6] \n\t" 338a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f9], 8(%[rdft_w]) \n\t" 339a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f2], %[f8], %[f7] \n\t" 340a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f8], %[f7] \n\t" 341a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f7], %[f4], %[f0] \n\t" 342a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f4], %[f4], %[f0] \n\t" 343a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org // prepare for loop 344a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[a_ptr], %[a], 64 \n\t" 345a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[p1_rdft], %[rdft_w], 8 \n\t" 346a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[p2_rdft], %[rdft_w], 16 \n\t" 347a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[count], $zero, 7 \n\t" 348a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org // finish second 8 349a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f2], %[f9], %[f2] \n\t" 350a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f8], %[f9], %[f8] \n\t" 351a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f7], %[f9], %[f7] \n\t" 352a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f4], %[f9], %[f4] \n\t" 353a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f1], 32(%[a]) \n\t" 354a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f3], 52(%[a]) \n\t" 355a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f5], 36(%[a]) \n\t" 356a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f6], 48(%[a]) \n\t" 357a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 40(%[a]) \n\t" 358a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f8], 44(%[a]) \n\t" 359a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f7], 56(%[a]) \n\t" 360a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f4], 60(%[a]) \n\t" 361a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org // loop 362a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "1: \n\t" 363a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f0], 0(%[a_ptr]) \n\t" 364a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f1], 4(%[a_ptr]) \n\t" 365a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f2], 8(%[a_ptr]) \n\t" 366a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f3], 12(%[a_ptr]) \n\t" 367a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f4], 16(%[a_ptr]) \n\t" 368a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f5], 20(%[a_ptr]) \n\t" 369a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f6], 24(%[a_ptr]) \n\t" 370a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f7], 28(%[a_ptr]) \n\t" 371a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f0], %[f2] \n\t" 372a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f0], %[f0], %[f2] \n\t" 373a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f4], %[f6] \n\t" 374a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f4], %[f6] \n\t" 375a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f6], %[f1], %[f3] \n\t" 376a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f3] \n\t" 377a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f3], %[f5], %[f7] \n\t" 378a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f5], %[f5], %[f7] \n\t" 379a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f10], 4(%[p1_rdft]) \n\t" 380a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f11], 0(%[p2_rdft]) \n\t" 381a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f12], 4(%[p2_rdft]) \n\t" 382a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f13], 8(%[first]) \n\t" 383a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f14], 12(%[first]) \n\t" 384a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f7], %[f8], %[f2] \n\t" 385a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f8], %[f8], %[f2] \n\t" 386a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f6], %[f3] \n\t" 387a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f6], %[f6], %[f3] \n\t" 388a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f3], %[f0], %[f5] \n\t" 389a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f0], %[f0], %[f5] \n\t" 390a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f5], %[f1], %[f4] \n\t" 391a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f4] \n\t" 392a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f7], 0(%[a_ptr]) \n\t" 393a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 4(%[a_ptr]) \n\t" 394a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f4], %[f9], %[f8] \n\t" 395a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#if defined(MIPS32_R2_LE) 396a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f8], %[f10], %[f8] \n\t" 397a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f7], %[f11], %[f0] \n\t" 398a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f0], %[f12], %[f0] \n\t" 399a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f2], %[f13], %[f3] \n\t" 400a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f3], %[f14], %[f3] \n\t" 401a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "nmsub.s %[f4], %[f4], %[f10], %[f6] \n\t" 402a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f8], %[f8], %[f9], %[f6] \n\t" 403a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "nmsub.s %[f7], %[f7], %[f12], %[f5] \n\t" 404a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f0], %[f0], %[f11], %[f5] \n\t" 405a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "nmsub.s %[f2], %[f2], %[f14], %[f1] \n\t" 406a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f3], %[f3], %[f13], %[f1] \n\t" 407a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#else 408a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f7], %[f10], %[f6] \n\t" 409a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f6], %[f9], %[f6] \n\t" 410a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f8], %[f10], %[f8] \n\t" 411a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f2], %[f11], %[f0] \n\t" 412a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f11], %[f11], %[f5] \n\t" 413a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f5], %[f12], %[f5] \n\t" 414a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f0], %[f12], %[f0] \n\t" 415a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f12], %[f13], %[f3] \n\t" 416a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f13], %[f13], %[f1] \n\t" 417a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f1], %[f14], %[f1] \n\t" 418a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f3], %[f14], %[f3] \n\t" 419a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f4], %[f7] \n\t" 420a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f6], %[f8] \n\t" 421a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f7], %[f2], %[f5] \n\t" 422a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f0], %[f11], %[f0] \n\t" 423a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f2], %[f12], %[f1] \n\t" 424a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f3], %[f13], %[f3] \n\t" 425a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#endif 426a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f4], 16(%[a_ptr]) \n\t" 427a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f8], 20(%[a_ptr]) \n\t" 428a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f7], 8(%[a_ptr]) \n\t" 429a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f0], 12(%[a_ptr]) \n\t" 430a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 24(%[a_ptr]) \n\t" 431a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f3], 28(%[a_ptr]) \n\t" 432a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f0], 32(%[a_ptr]) \n\t" 433a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f1], 36(%[a_ptr]) \n\t" 434a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f2], 40(%[a_ptr]) \n\t" 435a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f3], 44(%[a_ptr]) \n\t" 436a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f4], 48(%[a_ptr]) \n\t" 437a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f5], 52(%[a_ptr]) \n\t" 438a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f6], 56(%[a_ptr]) \n\t" 439a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f7], 60(%[a_ptr]) \n\t" 440a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f0], %[f2] \n\t" 441a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f0], %[f0], %[f2] \n\t" 442a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f4], %[f6] \n\t" 443a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f4], %[f6] \n\t" 444a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f6], %[f1], %[f3] \n\t" 445a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f3] \n\t" 446a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f3], %[f5], %[f7] \n\t" 447a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f5], %[f5], %[f7] \n\t" 448a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f11], 8(%[p2_rdft]) \n\t" 449a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f12], 12(%[p2_rdft]) \n\t" 450a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f13], 8(%[second]) \n\t" 451a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f14], 12(%[second]) \n\t" 452a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f7], %[f8], %[f2] \n\t" 453a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f8], %[f2], %[f8] \n\t" 454a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f6], %[f3] \n\t" 455a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f6], %[f3], %[f6] \n\t" 456a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f3], %[f0], %[f5] \n\t" 457a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f0], %[f0], %[f5] \n\t" 458a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f5], %[f1], %[f4] \n\t" 459a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f4] \n\t" 460a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f7], 32(%[a_ptr]) \n\t" 461a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 36(%[a_ptr]) \n\t" 462a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f4], %[f10], %[f8] \n\t" 463a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#if defined(MIPS32_R2_LE) 464a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f10], %[f10], %[f6] \n\t" 465a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f7], %[f11], %[f0] \n\t" 466a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f11], %[f11], %[f5] \n\t" 467a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f2], %[f13], %[f3] \n\t" 468a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f13], %[f13], %[f1] \n\t" 469a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f4], %[f4], %[f9], %[f6] \n\t" 470a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "nmsub.s %[f10], %[f10], %[f9], %[f8] \n\t" 471a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "nmsub.s %[f7], %[f7], %[f12], %[f5] \n\t" 472a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f11], %[f11], %[f12], %[f0] \n\t" 473a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "nmsub.s %[f2], %[f2], %[f14], %[f1] \n\t" 474a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f13], %[f13], %[f14], %[f3] \n\t" 475a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#else 476a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f2], %[f9], %[f6] \n\t" 477a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f10], %[f10], %[f6] \n\t" 478a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f9], %[f9], %[f8] \n\t" 479a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f7], %[f11], %[f0] \n\t" 480a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f8], %[f12], %[f5] \n\t" 481a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f11], %[f11], %[f5] \n\t" 482a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f12], %[f12], %[f0] \n\t" 483a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f5], %[f13], %[f3] \n\t" 484a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f0], %[f14], %[f1] \n\t" 485a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f13], %[f13], %[f1] \n\t" 486a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f14], %[f14], %[f3] \n\t" 487a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f4], %[f4], %[f2] \n\t" 488a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f10], %[f10], %[f9] \n\t" 489a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f7], %[f7], %[f8] \n\t" 490a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f11], %[f11], %[f12] \n\t" 491a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f2], %[f5], %[f0] \n\t" 492a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f13], %[f13], %[f14] \n\t" 493a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#endif 494a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f4], 48(%[a_ptr]) \n\t" 495a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f10], 52(%[a_ptr]) \n\t" 496a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f7], 40(%[a_ptr]) \n\t" 497a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f11], 44(%[a_ptr]) \n\t" 498a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 56(%[a_ptr]) \n\t" 499a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f13], 60(%[a_ptr]) \n\t" 500a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[count], %[count], -1 \n\t" 501a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f9], 8(%[p1_rdft]) \n\t" 502a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[a_ptr], %[a_ptr], 64 \n\t" 503a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[p1_rdft], %[p1_rdft], 8 \n\t" 504a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[p2_rdft], %[p2_rdft], 16 \n\t" 505a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[first], %[first], 8 \n\t" 506a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "bgtz %[count], 1b \n\t" 507a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org " addiu %[second], %[second], 8 \n\t" 508a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set pop \n\t" 509a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : [f0] "=&f" (f0), [f1] "=&f" (f1), [f2] "=&f" (f2), [f3] "=&f" (f3), 510a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f4] "=&f" (f4), [f5] "=&f" (f5), [f6] "=&f" (f6), [f7] "=&f" (f7), 511a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f8] "=&f" (f8), [f9] "=&f" (f9), [f10] "=&f" (f10), [f11] "=&f" (f11), 512a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f12] "=&f" (f12), [f13] "=&f" (f13), [f14] "=&f" (f14), 513a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [a_ptr] "=&r" (a_ptr), [p1_rdft] "=&r" (p1_rdft), [first] "+r" (first), 514a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [p2_rdft] "=&r" (p2_rdft), [count] "=&r" (count), [second] "+r" (second) 515a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : [a] "r" (a), [rdft_w] "r" (rdft_w) 516a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : "memory" 517a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ); 518a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org} 519a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org 520a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.orgstatic void cftmdl_128_mips(float* a) { 521a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org float f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14; 522a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org int tmp_a, count; 523a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org __asm __volatile ( 524a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set push \n\t" 525a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set noreorder \n\t" 526a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[tmp_a], %[a], 0 \n\t" 527a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[count], $zero, 4 \n\t" 528a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "1: \n\t" 529a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[count], %[count], -1 \n\t" 530a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f0], 0(%[tmp_a]) \n\t" 531a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f2], 32(%[tmp_a]) \n\t" 532a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f4], 64(%[tmp_a]) \n\t" 533a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f6], 96(%[tmp_a]) \n\t" 534a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f1], 4(%[tmp_a]) \n\t" 535a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f3], 36(%[tmp_a]) \n\t" 536a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f5], 68(%[tmp_a]) \n\t" 537a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f7], 100(%[tmp_a]) \n\t" 538a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f0], %[f2] \n\t" 539a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f0], %[f0], %[f2] \n\t" 540a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f4], %[f6] \n\t" 541a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f4], %[f6] \n\t" 542a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f6], %[f1], %[f3] \n\t" 543a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f3] \n\t" 544a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f3], %[f5], %[f7] \n\t" 545a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f5], %[f5], %[f7] \n\t" 546a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f7], %[f8], %[f2] \n\t" 547a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f8], %[f8], %[f2] \n\t" 548a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f1], %[f4] \n\t" 549a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f4] \n\t" 550a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f4], %[f6], %[f3] \n\t" 551a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f6], %[f6], %[f3] \n\t" 552a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f3], %[f0], %[f5] \n\t" 553a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f0], %[f0], %[f5] \n\t" 554a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f7], 0(%[tmp_a]) \n\t" 555a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f8], 64(%[tmp_a]) \n\t" 556a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 36(%[tmp_a]) \n\t" 557a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f1], 100(%[tmp_a]) \n\t" 558a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f4], 4(%[tmp_a]) \n\t" 559a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f6], 68(%[tmp_a]) \n\t" 560a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f3], 32(%[tmp_a]) \n\t" 561a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f0], 96(%[tmp_a]) \n\t" 562a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "bgtz %[count], 1b \n\t" 563a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org " addiu %[tmp_a], %[tmp_a], 8 \n\t" 564a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set pop \n\t" 565a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : [f0] "=&f" (f0), [f1] "=&f" (f1), [f2] "=&f" (f2), [f3] "=&f" (f3), 566a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f4] "=&f" (f4), [f5] "=&f" (f5), [f6] "=&f" (f6), [f7] "=&f" (f7), 567a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f8] "=&f" (f8), [tmp_a] "=&r" (tmp_a), [count] "=&r" (count) 568a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : [a] "r" (a) 569a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : "memory" 570a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ); 571a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org f9 = rdft_w[2]; 572a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org __asm __volatile ( 573a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set push \n\t" 574a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set noreorder \n\t" 575a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[tmp_a], %[a], 128 \n\t" 576a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[count], $zero, 4 \n\t" 577a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "1: \n\t" 578a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[count], %[count], -1 \n\t" 579a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f0], 0(%[tmp_a]) \n\t" 580a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f2], 32(%[tmp_a]) \n\t" 581a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f5], 68(%[tmp_a]) \n\t" 582a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f7], 100(%[tmp_a]) \n\t" 583a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f1], 4(%[tmp_a]) \n\t" 584a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f3], 36(%[tmp_a]) \n\t" 585a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f4], 64(%[tmp_a]) \n\t" 586a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f6], 96(%[tmp_a]) \n\t" 587a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f8], %[f0], %[f2] \n\t" 588a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f0], %[f0], %[f2] \n\t" 589a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f2], %[f5], %[f7] \n\t" 590a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f5], %[f5], %[f7] \n\t" 591a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f7], %[f1], %[f3] \n\t" 592a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f1], %[f1], %[f3] \n\t" 593a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f3], %[f4], %[f6] \n\t" 594a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f4], %[f4], %[f6] \n\t" 595a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f6], %[f8], %[f2] \n\t" 596a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f8], %[f2] \n\t" 597a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f5], %[f1] \n\t" 598a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f5], %[f5], %[f1] \n\t" 599a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f1], %[f3], %[f7] \n\t" 600a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f3], %[f3], %[f7] \n\t" 601a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f7], %[f0], %[f4] \n\t" 602a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f0], %[f0], %[f4] \n\t" 603a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f6], %[f1] \n\t" 604a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f6], %[f6], %[f1] \n\t" 605a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f3], %[f8] \n\t" 606a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f3], %[f3], %[f8] \n\t" 607a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f4], %[f4], %[f9] \n\t" 608a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f6], %[f6], %[f9] \n\t" 609a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f1], %[f1], %[f9] \n\t" 610a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f3], %[f3], %[f9] \n\t" 611a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f7], 0(%[tmp_a]) \n\t" 612a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 4(%[tmp_a]) \n\t" 613a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f5], 64(%[tmp_a]) \n\t" 614a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f0], 68(%[tmp_a]) \n\t" 615a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f4], 32(%[tmp_a]) \n\t" 616a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f6], 36(%[tmp_a]) \n\t" 617a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f1], 96(%[tmp_a]) \n\t" 618a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f3], 100(%[tmp_a]) \n\t" 619a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "bgtz %[count], 1b \n\t" 620a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org " addiu %[tmp_a], %[tmp_a], 8 \n\t" 621a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set pop \n\t" 622a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : [f0] "=&f" (f0), [f1] "=&f" (f1), [f2] "=&f" (f2), [f3] "=&f" (f3), 623a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f4] "=&f" (f4), [f5] "=&f" (f5), [f6] "=&f" (f6), [f7] "=&f" (f7), 624a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f8] "=&f" (f8), [tmp_a] "=&r" (tmp_a), [count] "=&r" (count) 625a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : [a] "r" (a), [f9] "f" (f9) 626a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : "memory" 627a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ); 628a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org f10 = rdft_w[3]; 629a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org f11 = rdft_w[4]; 630a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org f12 = rdft_w[5]; 631a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org f13 = rdft_wk3ri_first[2]; 632a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org f14 = rdft_wk3ri_first[3]; 633a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org 634a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org __asm __volatile ( 635a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set push \n\t" 636a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set noreorder \n\t" 637a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[tmp_a], %[a], 256 \n\t" 638a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[count], $zero, 4 \n\t" 639a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "1: \n\t" 640a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[count], %[count], -1 \n\t" 641a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f0], 0(%[tmp_a]) \n\t" 642a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f2], 32(%[tmp_a]) \n\t" 643a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f4], 64(%[tmp_a]) \n\t" 644a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f6], 96(%[tmp_a]) \n\t" 645a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f1], 4(%[tmp_a]) \n\t" 646a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f3], 36(%[tmp_a]) \n\t" 647a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f5], 68(%[tmp_a]) \n\t" 648a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f7], 100(%[tmp_a]) \n\t" 649a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f0], %[f2] \n\t" 650a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f0], %[f0], %[f2] \n\t" 651a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f4], %[f6] \n\t" 652a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f4], %[f6] \n\t" 653a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f6], %[f1], %[f3] \n\t" 654a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f3] \n\t" 655a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f3], %[f5], %[f7] \n\t" 656a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f5], %[f5], %[f7] \n\t" 657a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f7], %[f8], %[f2] \n\t" 658a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f8], %[f2] \n\t" 659a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f1], %[f4] \n\t" 660a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f4] \n\t" 661a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f6], %[f3] \n\t" 662a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f6], %[f6], %[f3] \n\t" 663a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f3], %[f0], %[f5] \n\t" 664a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f0], %[f0], %[f5] \n\t" 665a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f8], 0(%[tmp_a]) \n\t" 666a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f6], 4(%[tmp_a]) \n\t" 667a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f5], %[f9], %[f7] \n\t" 668a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#if defined(MIPS32_R2_LE) 669a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f7], %[f10], %[f7] \n\t" 670a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f8], %[f11], %[f3] \n\t" 671a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f3], %[f12], %[f3] \n\t" 672a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f6], %[f13], %[f0] \n\t" 673a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f0], %[f14], %[f0] \n\t" 674a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "nmsub.s %[f5], %[f5], %[f10], %[f4] \n\t" 675a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f7], %[f7], %[f9], %[f4] \n\t" 676a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "nmsub.s %[f8], %[f8], %[f12], %[f2] \n\t" 677a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f3], %[f3], %[f11], %[f2] \n\t" 678a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "nmsub.s %[f6], %[f6], %[f14], %[f1] \n\t" 679a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f0], %[f0], %[f13], %[f1] \n\t" 680a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f5], 64(%[tmp_a]) \n\t" 681a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f7], 68(%[tmp_a]) \n\t" 682a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#else 683a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f8], %[f10], %[f4] \n\t" 684a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f4], %[f9], %[f4] \n\t" 685a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f7], %[f10], %[f7] \n\t" 686a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f6], %[f11], %[f3] \n\t" 687a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f3], %[f12], %[f3] \n\t" 688a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f5], %[f5], %[f8] \n\t" 689a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f8], %[f12], %[f2] \n\t" 690a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f2], %[f11], %[f2] \n\t" 691a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f7], %[f4], %[f7] \n\t" 692a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f4], %[f13], %[f0] \n\t" 693a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f0], %[f14], %[f0] \n\t" 694a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f8], %[f6], %[f8] \n\t" 695a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f6], %[f14], %[f1] \n\t" 696a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f1], %[f13], %[f1] \n\t" 697a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f3], %[f2], %[f3] \n\t" 698a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f5], 64(%[tmp_a]) \n\t" 699a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f7], 68(%[tmp_a]) \n\t" 700a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f6], %[f4], %[f6] \n\t" 701a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f0], %[f1], %[f0] \n\t" 702a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#endif 703a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f8], 32(%[tmp_a]) \n\t" 704a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f3], 36(%[tmp_a]) \n\t" 705a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f6], 96(%[tmp_a]) \n\t" 706a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f0], 100(%[tmp_a]) \n\t" 707a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "bgtz %[count], 1b \n\t" 708a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org " addiu %[tmp_a], %[tmp_a], 8 \n\t" 709a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set pop \n\t" 710a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : [f0] "=&f" (f0), [f1] "=&f" (f1), [f2] "=&f" (f2), [f3] "=&f" (f3), 711a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f4] "=&f" (f4), [f5] "=&f" (f5), [f6] "=&f" (f6), [f7] "=&f" (f7), 712a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f8] "=&f" (f8), [tmp_a] "=&r" (tmp_a), [count] "=&r" (count) 713a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : [a] "r" (a), [f9] "f" (f9), [f10] "f" (f10), [f11] "f" (f11), 714a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f12] "f" (f12), [f13] "f" (f13), [f14] "f" (f14) 715a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : "memory" 716a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ); 717a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org f11 = rdft_w[6]; 718a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org f12 = rdft_w[7]; 719a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org f13 = rdft_wk3ri_second[2]; 720a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org f14 = rdft_wk3ri_second[3]; 721a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org __asm __volatile ( 722a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set push \n\t" 723a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set noreorder \n\t" 724a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[tmp_a], %[a], 384 \n\t" 725a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[count], $zero, 4 \n\t" 726a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "1: \n\t" 727a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[count], %[count], -1 \n\t" 728a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f0], 0(%[tmp_a]) \n\t" 729a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f1], 4(%[tmp_a]) \n\t" 730a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f2], 32(%[tmp_a]) \n\t" 731a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f3], 36(%[tmp_a]) \n\t" 732a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f4], 64(%[tmp_a]) \n\t" 733a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f5], 68(%[tmp_a]) \n\t" 734a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f6], 96(%[tmp_a]) \n\t" 735a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f7], 100(%[tmp_a]) \n\t" 736a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f0], %[f2] \n\t" 737a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f0], %[f0], %[f2] \n\t" 738a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f4], %[f6] \n\t" 739a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f4], %[f6] \n\t" 740a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f6], %[f1], %[f3] \n\t" 741a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f3] \n\t" 742a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f3], %[f5], %[f7] \n\t" 743a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f5], %[f5], %[f7] \n\t" 744a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f7], %[f2], %[f8] \n\t" 745a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f2], %[f8] \n\t" 746a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f1], %[f4] \n\t" 747a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f4] \n\t" 748a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f3], %[f6] \n\t" 749a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f3], %[f3], %[f6] \n\t" 750a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f6], %[f0], %[f5] \n\t" 751a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f0], %[f0], %[f5] \n\t" 752a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 0(%[tmp_a]) \n\t" 753a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f3], 4(%[tmp_a]) \n\t" 754a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f5], %[f10], %[f7] \n\t" 755a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#if defined(MIPS32_R2_LE) 756a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f7], %[f9], %[f7] \n\t" 757a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f2], %[f12], %[f8] \n\t" 758a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f8], %[f11], %[f8] \n\t" 759a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f3], %[f14], %[f1] \n\t" 760a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f1], %[f13], %[f1] \n\t" 761a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f5], %[f5], %[f9], %[f4] \n\t" 762a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "msub.s %[f7], %[f7], %[f10], %[f4] \n\t" 763a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "msub.s %[f2], %[f2], %[f11], %[f6] \n\t" 764a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f8], %[f8], %[f12], %[f6] \n\t" 765a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "msub.s %[f3], %[f3], %[f13], %[f0] \n\t" 766a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f1], %[f1], %[f14], %[f0] \n\t" 767a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f5], 64(%[tmp_a]) \n\t" 768a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f7], 68(%[tmp_a]) \n\t" 769a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#else 770a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f2], %[f9], %[f4] \n\t" 771a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f4], %[f10], %[f4] \n\t" 772a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f7], %[f9], %[f7] \n\t" 773a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f3], %[f11], %[f6] \n\t" 774a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f6], %[f12], %[f6] \n\t" 775a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f5], %[f5], %[f2] \n\t" 776a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f7], %[f4], %[f7] \n\t" 777a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f2], %[f12], %[f8] \n\t" 778a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f8], %[f11], %[f8] \n\t" 779a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f4], %[f14], %[f1] \n\t" 780a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f1], %[f13], %[f1] \n\t" 781a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f2], %[f3], %[f2] \n\t" 782a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f3], %[f13], %[f0] \n\t" 783a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f0], %[f14], %[f0] \n\t" 784a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f8], %[f6] \n\t" 785a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f5], 64(%[tmp_a]) \n\t" 786a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f7], 68(%[tmp_a]) \n\t" 787a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f3], %[f3], %[f4] \n\t" 788a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f1], %[f1], %[f0] \n\t" 789a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#endif 790a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 32(%[tmp_a]) \n\t" 791a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f8], 36(%[tmp_a]) \n\t" 792a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f3], 96(%[tmp_a]) \n\t" 793a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f1], 100(%[tmp_a]) \n\t" 794a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "bgtz %[count], 1b \n\t" 795a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org " addiu %[tmp_a], %[tmp_a], 8 \n\t" 796a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set pop \n\t" 797a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : [f0] "=&f" (f0), [f1] "=&f" (f1), [f2] "=&f" (f2), [f3] "=&f" (f3), 798a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f4] "=&f" (f4), [f5] "=&f" (f5), [f6] "=&f" (f6), [f7] "=&f" (f7), 799a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f8] "=&f" (f8), [tmp_a] "=&r" (tmp_a), [count] "=&r" (count) 800a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : [a] "r" (a), [f9] "f" (f9), [f10] "f" (f10), [f11] "f" (f11), 801a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f12] "f" (f12), [f13] "f" (f13), [f14] "f" (f14) 802a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : "memory" 803a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ); 804a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org} 805a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org 806a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.orgstatic void cftfsub_128_mips(float* a) { 807a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org float f0, f1, f2, f3, f4, f5, f6, f7, f8; 808c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org int tmp_a, count; 809c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 810c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org cft1st_128(a); 811c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org cftmdl_128(a); 812c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 813c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org __asm __volatile ( 814c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org ".set push \n\t" 815c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org ".set noreorder \n\t" 816c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org "addiu %[tmp_a], %[a], 0 \n\t" 817c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org "addiu %[count], $zero, 16 \n\t" 818c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org "1: \n\t" 819c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org "addiu %[count], %[count], -1 \n\t" 820c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org "lwc1 %[f0], 0(%[tmp_a]) \n\t" 821c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org "lwc1 %[f2], 128(%[tmp_a]) \n\t" 822c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org "lwc1 %[f4], 256(%[tmp_a]) \n\t" 823c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org "lwc1 %[f6], 384(%[tmp_a]) \n\t" 824a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f1], 4(%[tmp_a]) \n\t" 825a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f3], 132(%[tmp_a]) \n\t" 826a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f5], 260(%[tmp_a]) \n\t" 827c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org "lwc1 %[f7], 388(%[tmp_a]) \n\t" 828a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f0], %[f2] \n\t" 829a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f0], %[f0], %[f2] \n\t" 830a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f4], %[f6] \n\t" 831a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f4], %[f6] \n\t" 832a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f6], %[f1], %[f3] \n\t" 833a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f3] \n\t" 834a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f3], %[f5], %[f7] \n\t" 835a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f5], %[f5], %[f7] \n\t" 836a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f7], %[f8], %[f2] \n\t" 837a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f8], %[f8], %[f2] \n\t" 838a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f1], %[f4] \n\t" 839a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f4] \n\t" 840a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f4], %[f6], %[f3] \n\t" 841a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f6], %[f6], %[f3] \n\t" 842a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f3], %[f0], %[f5] \n\t" 843a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f0], %[f0], %[f5] \n\t" 844a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f7], 0(%[tmp_a]) \n\t" 845a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f8], 256(%[tmp_a]) \n\t" 846a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 132(%[tmp_a]) \n\t" 847a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f1], 388(%[tmp_a]) \n\t" 848a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f4], 4(%[tmp_a]) \n\t" 849a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f6], 260(%[tmp_a]) \n\t" 850a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f3], 128(%[tmp_a]) \n\t" 851a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f0], 384(%[tmp_a]) \n\t" 852c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org "bgtz %[count], 1b \n\t" 853c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org " addiu %[tmp_a], %[tmp_a], 8 \n\t" 854c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org ".set pop \n\t" 855c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org : [f0] "=&f" (f0), [f1] "=&f" (f1), [f2] "=&f" (f2), [f3] "=&f" (f3), 856c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org [f4] "=&f" (f4), [f5] "=&f" (f5), [f6] "=&f" (f6), [f7] "=&f" (f7), 857a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f8] "=&f" (f8), [tmp_a] "=&r" (tmp_a), 858c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org [count] "=&r" (count) 859c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org : [a] "r" (a) 860c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org : "memory" 861c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org ); 862c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org} 863c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org 864a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.orgstatic void cftbsub_128_mips(float* a) { 865a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org float f0, f1, f2, f3, f4, f5, f6, f7, f8; 866a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org int tmp_a, count; 867a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org 868a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org cft1st_128(a); 869a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org cftmdl_128(a); 870a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org 871a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org __asm __volatile ( 872a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set push \n\t" 873a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set noreorder \n\t" 874a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[tmp_a], %[a], 0 \n\t" 875a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[count], $zero, 16 \n\t" 876a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "1: \n\t" 877a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[count], %[count], -1 \n\t" 878a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f0], 0(%[tmp_a]) \n\t" 879a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f2], 128(%[tmp_a]) \n\t" 880a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f4], 256(%[tmp_a]) \n\t" 881a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f6], 384(%[tmp_a]) \n\t" 882a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f1], 4(%[tmp_a]) \n\t" 883a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f3], 132(%[tmp_a]) \n\t" 884a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f5], 260(%[tmp_a]) \n\t" 885a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f7], 388(%[tmp_a]) \n\t" 886a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f0], %[f2] \n\t" 887a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f0], %[f0], %[f2] \n\t" 888a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f4], %[f6] \n\t" 889a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f4], %[f6] \n\t" 890a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f6], %[f1], %[f3] \n\t" 891a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f3], %[f1] \n\t" 892a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f3], %[f5], %[f7] \n\t" 893a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f5], %[f5], %[f7] \n\t" 894a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f7], %[f8], %[f2] \n\t" 895a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f8], %[f8], %[f2] \n\t" 896a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f2], %[f1], %[f4] \n\t" 897a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f1], %[f1], %[f4] \n\t" 898a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f4], %[f3], %[f6] \n\t" 899a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f6], %[f3], %[f6] \n\t" 900a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f3], %[f0], %[f5] \n\t" 901a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f0], %[f0], %[f5] \n\t" 902a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "neg.s %[f4], %[f4] \n\t" 903a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f7], 0(%[tmp_a]) \n\t" 904a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f8], 256(%[tmp_a]) \n\t" 905a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 132(%[tmp_a]) \n\t" 906a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f1], 388(%[tmp_a]) \n\t" 907a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f6], 260(%[tmp_a]) \n\t" 908a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f3], 128(%[tmp_a]) \n\t" 909a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f0], 384(%[tmp_a]) \n\t" 910a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f4], 4(%[tmp_a]) \n\t" 911a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "bgtz %[count], 1b \n\t" 912a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org " addiu %[tmp_a], %[tmp_a], 8 \n\t" 913a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set pop \n\t" 914a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : [f0] "=&f" (f0), [f1] "=&f" (f1), [f2] "=&f" (f2), [f3] "=&f" (f3), 915a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f4] "=&f" (f4), [f5] "=&f" (f5), [f6] "=&f" (f6), [f7] "=&f" (f7), 916a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f8] "=&f" (f8), [tmp_a] "=&r" (tmp_a), [count] "=&r" (count) 917a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : [a] "r" (a) 918a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : "memory" 919a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ); 920a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org} 921a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org 922a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.orgstatic void rftfsub_128_mips(float* a) { 923a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org const float* c = rdft_w + 32; 924a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org const float f0 = 0.5f; 925a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org float* a1 = &a[2]; 926a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org float* a2 = &a[126]; 927a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org const float* c1 = &c[1]; 928a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org const float* c2 = &c[31]; 929a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org float f1, f2, f3 ,f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15; 930a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org int count; 931a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org 932a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org __asm __volatile ( 933a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set push \n\t" 934a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set noreorder \n\t" 935a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f6], 0(%[c2]) \n\t" 936a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f1], 0(%[a1]) \n\t" 937a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f2], 0(%[a2]) \n\t" 938a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f3], 4(%[a1]) \n\t" 939a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f4], 4(%[a2]) \n\t" 940a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f5], 0(%[c1]) \n\t" 941a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f6], %[f0], %[f6] \n\t" 942a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f7], %[f1], %[f2] \n\t" 943a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f3], %[f4] \n\t" 944a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[count], $zero, 15 \n\t" 945a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f9], %[f6], %[f7] \n\t" 946a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f6], %[f6], %[f8] \n\t" 947a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#if !defined(MIPS32_R2_LE) 948a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f8], %[f5], %[f8] \n\t" 949a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f5], %[f5], %[f7] \n\t" 950a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f9], %[f9], %[f8] \n\t" 951a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f6], %[f6], %[f5] \n\t" 952a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#else 953a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "nmsub.s %[f9], %[f9], %[f5], %[f8] \n\t" 954a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f6], %[f6], %[f5], %[f7] \n\t" 955a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#endif 956a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f9] \n\t" 957a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f2], %[f9] \n\t" 958a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f3], %[f3], %[f6] \n\t" 959a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f4], %[f6] \n\t" 960a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f1], 0(%[a1]) \n\t" 961a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 0(%[a2]) \n\t" 962a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f3], 4(%[a1]) \n\t" 963a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f4], 4(%[a2]) \n\t" 964a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[a1], %[a1], 8 \n\t" 965a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[a2], %[a2], -8 \n\t" 966a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[c1], %[c1], 4 \n\t" 967a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[c2], %[c2], -4 \n\t" 968a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "1: \n\t" 969a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f6], 0(%[c2]) \n\t" 970a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f1], 0(%[a1]) \n\t" 971a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f2], 0(%[a2]) \n\t" 972a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f3], 4(%[a1]) \n\t" 973a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f4], 4(%[a2]) \n\t" 974a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f5], 0(%[c1]) \n\t" 975a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f6], %[f0], %[f6] \n\t" 976a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f7], %[f1], %[f2] \n\t" 977a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f3], %[f4] \n\t" 978a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f10], -4(%[c2]) \n\t" 979a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f11], 8(%[a1]) \n\t" 980a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f12], -8(%[a2]) \n\t" 981a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f9], %[f6], %[f7] \n\t" 982a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f6], %[f6], %[f8] \n\t" 983a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#if !defined(MIPS32_R2_LE) 984a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f8], %[f5], %[f8] \n\t" 985a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f5], %[f5], %[f7] \n\t" 986a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f13], 12(%[a1]) \n\t" 987a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f14], -4(%[a2]) \n\t" 988a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f15], 4(%[c1]) \n\t" 989a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f9], %[f9], %[f8] \n\t" 990a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f6], %[f6], %[f5] \n\t" 991a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#else 992a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f13], 12(%[a1]) \n\t" 993a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f14], -4(%[a2]) \n\t" 994a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f15], 4(%[c1]) \n\t" 995a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "nmsub.s %[f9], %[f9], %[f5], %[f8] \n\t" 996a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f6], %[f6], %[f5], %[f7] \n\t" 997a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#endif 998a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f10], %[f0], %[f10] \n\t" 999a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f5], %[f11], %[f12] \n\t" 1000a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f7], %[f13], %[f14] \n\t" 1001a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f9] \n\t" 1002a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f2], %[f9] \n\t" 1003a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f3], %[f3], %[f6] \n\t" 1004a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f8], %[f10], %[f5] \n\t" 1005a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f10], %[f10], %[f7] \n\t" 1006a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#if !defined(MIPS32_R2_LE) 1007a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f9], %[f15], %[f7] \n\t" 1008a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f15], %[f15], %[f5] \n\t" 1009a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f4], %[f6] \n\t" 1010a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f1], 0(%[a1]) \n\t" 1011a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 0(%[a2]) \n\t" 1012a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f8], %[f8], %[f9] \n\t" 1013a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f10], %[f10], %[f15] \n\t" 1014a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#else 1015a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f1], 0(%[a1]) \n\t" 1016a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 0(%[a2]) \n\t" 1017a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f4], %[f6] \n\t" 1018a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "nmsub.s %[f8], %[f8], %[f15], %[f7] \n\t" 1019a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f10], %[f10], %[f15], %[f5] \n\t" 1020a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#endif 1021a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f3], 4(%[a1]) \n\t" 1022a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f4], 4(%[a2]) \n\t" 1023a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f11], %[f11], %[f8] \n\t" 1024a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f12], %[f12], %[f8] \n\t" 1025a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f13], %[f13], %[f10] \n\t" 1026a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f14], %[f14], %[f10] \n\t" 1027a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[c2], %[c2], -8 \n\t" 1028a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[c1], %[c1], 8 \n\t" 1029a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f11], 8(%[a1]) \n\t" 1030a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f12], -8(%[a2]) \n\t" 1031a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f13], 12(%[a1]) \n\t" 1032a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f14], -4(%[a2]) \n\t" 1033a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[a1], %[a1], 16 \n\t" 1034a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[count], %[count], -1 \n\t" 1035a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "bgtz %[count], 1b \n\t" 1036a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org " addiu %[a2], %[a2], -16 \n\t" 1037a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set pop \n\t" 1038a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : [a1] "+r" (a1), [a2] "+r" (a2), [c1] "+r" (c1), [c2] "+r" (c2), 1039a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f1] "=&f" (f1), [f2] "=&f" (f2), [f3] "=&f" (f3), [f4] "=&f" (f4), 1040a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f5] "=&f" (f5), [f6] "=&f" (f6), [f7] "=&f" (f7), [f8] "=&f" (f8), 1041a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f9] "=&f" (f9), [f10] "=&f" (f10), [f11] "=&f" (f11), [f12] "=&f" (f12), 1042a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f13] "=&f" (f13), [f14] "=&f" (f14), [f15] "=&f" (f15), 1043a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [count] "=&r" (count) 1044a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : [f0] "f" (f0) 1045a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : "memory" 1046a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ); 1047a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org} 1048a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org 1049a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.orgstatic void rftbsub_128_mips(float* a) { 1050a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org const float *c = rdft_w + 32; 1051a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org const float f0 = 0.5f; 1052a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org float* a1 = &a[2]; 1053a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org float* a2 = &a[126]; 1054a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org const float* c1 = &c[1]; 1055a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org const float* c2 = &c[31]; 1056a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org float f1, f2, f3 ,f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15; 1057a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org int count; 1058a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org 1059a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org a[1] = -a[1]; 1060a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org a[65] = -a[65]; 1061a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org 1062a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org __asm __volatile ( 1063a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set push \n\t" 1064a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set noreorder \n\t" 1065a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f6], 0(%[c2]) \n\t" 1066a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f1], 0(%[a1]) \n\t" 1067a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f2], 0(%[a2]) \n\t" 1068a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f3], 4(%[a1]) \n\t" 1069a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f4], 4(%[a2]) \n\t" 1070a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f5], 0(%[c1]) \n\t" 1071a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f6], %[f0], %[f6] \n\t" 1072a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f7], %[f1], %[f2] \n\t" 1073a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f3], %[f4] \n\t" 1074a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[count], $zero, 15 \n\t" 1075a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f9], %[f6], %[f7] \n\t" 1076a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f6], %[f6], %[f8] \n\t" 1077a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#if !defined(MIPS32_R2_LE) 1078a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f8], %[f5], %[f8] \n\t" 1079a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f5], %[f5], %[f7] \n\t" 1080a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f9], %[f9], %[f8] \n\t" 1081a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f6], %[f6], %[f5] \n\t" 1082a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#else 1083a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f9], %[f9], %[f5], %[f8] \n\t" 1084a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "nmsub.s %[f6], %[f6], %[f5], %[f7] \n\t" 1085a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#endif 1086a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f9] \n\t" 1087a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f2], %[f9] \n\t" 1088a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f3], %[f6], %[f3] \n\t" 1089a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f6], %[f4] \n\t" 1090a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f1], 0(%[a1]) \n\t" 1091a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 0(%[a2]) \n\t" 1092a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f3], 4(%[a1]) \n\t" 1093a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f4], 4(%[a2]) \n\t" 1094a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[a1], %[a1], 8 \n\t" 1095a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[a2], %[a2], -8 \n\t" 1096a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[c1], %[c1], 4 \n\t" 1097a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[c2], %[c2], -4 \n\t" 1098a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "1: \n\t" 1099a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f6], 0(%[c2]) \n\t" 1100a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f1], 0(%[a1]) \n\t" 1101a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f2], 0(%[a2]) \n\t" 1102a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f3], 4(%[a1]) \n\t" 1103a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f4], 4(%[a2]) \n\t" 1104a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f5], 0(%[c1]) \n\t" 1105a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f6], %[f0], %[f6] \n\t" 1106a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f7], %[f1], %[f2] \n\t" 1107a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f3], %[f4] \n\t" 1108a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f10], -4(%[c2]) \n\t" 1109a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f11], 8(%[a1]) \n\t" 1110a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f12], -8(%[a2]) \n\t" 1111a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f9], %[f6], %[f7] \n\t" 1112a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f6], %[f6], %[f8] \n\t" 1113a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#if !defined(MIPS32_R2_LE) 1114a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f8], %[f5], %[f8] \n\t" 1115a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f5], %[f5], %[f7] \n\t" 1116a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f13], 12(%[a1]) \n\t" 1117a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f14], -4(%[a2]) \n\t" 1118a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f15], 4(%[c1]) \n\t" 1119a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f9], %[f9], %[f8] \n\t" 1120a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f6], %[f6], %[f5] \n\t" 1121a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#else 1122a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f13], 12(%[a1]) \n\t" 1123a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f14], -4(%[a2]) \n\t" 1124a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "lwc1 %[f15], 4(%[c1]) \n\t" 1125a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f9], %[f9], %[f5], %[f8] \n\t" 1126a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "nmsub.s %[f6], %[f6], %[f5], %[f7] \n\t" 1127a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#endif 1128a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f10], %[f0], %[f10] \n\t" 1129a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f5], %[f11], %[f12] \n\t" 1130a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f7], %[f13], %[f14] \n\t" 1131a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f1], %[f1], %[f9] \n\t" 1132a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f2], %[f2], %[f9] \n\t" 1133a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f3], %[f6], %[f3] \n\t" 1134a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f8], %[f10], %[f5] \n\t" 1135a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f10], %[f10], %[f7] \n\t" 1136a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#if !defined(MIPS32_R2_LE) 1137a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f9], %[f15], %[f7] \n\t" 1138a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "mul.s %[f15], %[f15], %[f5] \n\t" 1139a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f6], %[f4] \n\t" 1140a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f1], 0(%[a1]) \n\t" 1141a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 0(%[a2]) \n\t" 1142a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f8], %[f8], %[f9] \n\t" 1143a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f10], %[f10], %[f15] \n\t" 1144a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#else 1145a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f1], 0(%[a1]) \n\t" 1146a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f2], 0(%[a2]) \n\t" 1147a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f4], %[f6], %[f4] \n\t" 1148a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "madd.s %[f8], %[f8], %[f15], %[f7] \n\t" 1149a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "nmsub.s %[f10], %[f10], %[f15], %[f5] \n\t" 1150a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org#endif 1151a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f3], 4(%[a1]) \n\t" 1152a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f4], 4(%[a2]) \n\t" 1153a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f11], %[f11], %[f8] \n\t" 1154a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "add.s %[f12], %[f12], %[f8] \n\t" 1155a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f13], %[f10], %[f13] \n\t" 1156a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "sub.s %[f14], %[f10], %[f14] \n\t" 1157a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[c2], %[c2], -8 \n\t" 1158a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[c1], %[c1], 8 \n\t" 1159a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f11], 8(%[a1]) \n\t" 1160a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f12], -8(%[a2]) \n\t" 1161a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f13], 12(%[a1]) \n\t" 1162a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "swc1 %[f14], -4(%[a2]) \n\t" 1163a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[a1], %[a1], 16 \n\t" 1164a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "addiu %[count], %[count], -1 \n\t" 1165a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org "bgtz %[count], 1b \n\t" 1166a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org " addiu %[a2], %[a2], -16 \n\t" 1167a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ".set pop \n\t" 1168a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : [a1] "+r" (a1), [a2] "+r" (a2), [c1] "+r" (c1), [c2] "+r" (c2), 1169a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f1] "=&f" (f1), [f2] "=&f" (f2), [f3] "=&f" (f3), [f4] "=&f" (f4), 1170a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f5] "=&f" (f5), [f6] "=&f" (f6), [f7] "=&f" (f7), [f8] "=&f" (f8), 1171a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f9] "=&f" (f9), [f10] "=&f" (f10), [f11] "=&f" (f11), [f12] "=&f" (f12), 1172a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [f13] "=&f" (f13), [f14] "=&f" (f14), [f15] "=&f" (f15), 1173a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org [count] "=&r" (count) 1174a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : [f0] "f" (f0) 1175a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org : "memory" 1176a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org ); 1177a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org} 1178a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org 1179c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.orgvoid aec_rdft_init_mips(void) { 1180a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org cft1st_128 = cft1st_128_mips; 1181a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org cftmdl_128 = cftmdl_128_mips; 1182a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org rftfsub_128 = rftfsub_128_mips; 1183a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org rftbsub_128 = rftbsub_128_mips; 1184c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org cftfsub_128 = cftfsub_128_mips; 1185a22485eaf02a9756035739b0ad00a3bb7ac3e67dandrew@webrtc.org cftbsub_128 = cftbsub_128_mips; 1186c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org bitrv2_128 = bitrv2_128_mips; 1187c0907eff42079cb53c4ee28cb47a8e495ab06b37andrew@webrtc.org} 1188