| 114 | } |
| 115 | |
| 116 | void load(void) { |
| 117 | // SSE1 Load functions: |
| 118 | Ret_FloatPtr(__m128, _mm_load_ps, 4, 4); |
| 119 | Ret_FloatPtr(__m128, _mm_load_ps1, 1, 1); |
| 120 | Ret_FloatPtr(__m128, _mm_load_ss, 1, 1); |
| 121 | Ret_FloatPtr(__m128, _mm_load1_ps, 1, 1); |
| 122 | Ret_M128_FloatPtr(__m128, _mm_loadh_pi, __m64*, 2, 1); |
| 123 | Ret_M128_FloatPtr(__m128, _mm_loadl_pi, __m64*, 2, 1); |
| 124 | Ret_FloatPtr(__m128, _mm_loadr_ps, 4, 4); |
| 125 | Ret_FloatPtr(__m128, _mm_loadu_ps, 4, 1); |
| 126 | } |
| 127 | |
| 128 | void misc(void) { |
| 129 | // SSE1 Miscellaneous functions: |
| 130 | Ret_M128(int, _mm_movemask_ps); |
| 131 | } |
| 132 | |
| 133 | void move(void) { |
| 134 | // SSE1 Move functions: |
| 135 | Ret_M128_M128(__m128, _mm_move_ss); |
| 136 | Ret_M128_M128(__m128, _mm_movehl_ps); |
| 137 | Ret_M128_M128(__m128, _mm_movelh_ps); |
| 138 | } |
| 139 | |
| 140 | void set(void) { |
| 141 | // SSE1 Set functions: |
| 142 | Ret_Float4(__m128, _mm_set_ps, 1); |
| 143 | Ret_Float(__m128, _mm_set_ps1, 1); |
| 144 | Ret_Float(__m128, _mm_set_ss, 1); |
| 145 | Ret_Float(__m128, _mm_set1_ps, 1); |
| 146 | Ret_Float4(__m128, _mm_setr_ps, 1); |
| 147 | |
| 148 | __m128 zero = _mm_setzero_ps(); |
| 149 | tostr(&zero, str); |
| 150 | printf("_mm_setzero_ps() = %s\n", str); |
| 151 | } |
| 152 | |
| 153 | void special_math(void) { |
| 154 | // SSE1 Special Math instructions: |
| 155 | Ret_M128_M128(__m128, _mm_max_ps); |
| 156 | Ret_M128_M128(__m128, _mm_max_ss); |
| 157 | Ret_M128_M128(__m128, _mm_min_ps); |
| 158 | Ret_M128_M128(__m128, _mm_min_ss); |
| 159 | } |
| 160 | |
| 161 | void store(void) { |
| 162 | // SSE1 Store instructions: |
| 163 | void_OutFloatPtr_M128(_mm_store_ps, float*, 16, 16); |
| 164 | void_OutFloatPtr_M128(_mm_store_ps1, float*, 16, 16); |
| 165 | void_OutFloatPtr_M128(_mm_store_ss, float*, 4, 1); |
| 166 | void_OutFloatPtr_M128(_mm_store1_ps, float*, 16, 16); |
| 167 | void_OutFloatPtr_M128(_mm_storeh_pi, __m64*, 8, 1); |
| 168 | void_OutFloatPtr_M128(_mm_storel_pi, __m64*, 8, 1); |
| 169 | void_OutFloatPtr_M128(_mm_storer_ps, float*, 16, 16); |
| 170 | void_OutFloatPtr_M128(_mm_storeu_ps, float*, 16, 1); |
| 171 | void_OutFloatPtr_M128(_mm_stream_ps, float*, 16, 16); |
| 172 | } |
| 173 | |