| #if !defined(SIMDE_TEST_X86_TEST_AVX_H) |
| #define SIMDE_TEST_X86_TEST_AVX_H |
| |
| #include "test-x86.h" |
| #include "test-sse2.h" |
| #include <simde/x86/avx.h> |
| |
| HEDLEY_DIAGNOSTIC_PUSH |
| SIMDE_DISABLE_UNWANTED_DIAGNOSTICS |
| |
| SIMDE_TEST_X86_GENERATE_FLOAT_TYPE_FUNCS_(__m256, 32, 8, simde_mm256_storeu_ps) |
| SIMDE_TEST_X86_GENERATE_FLOAT_TYPE_FUNCS_(__m256d, 64, 4, simde_mm256_storeu_pd) |
| SIMDE_TEST_X86_GENERATE_INT_TYPE_FUNCS_(__m256i, 8, 32, simde_mm256_storeu_si256) |
| SIMDE_TEST_X86_GENERATE_INT_TYPE_FUNCS_(__m256i, 16, 16, simde_mm256_storeu_si256) |
| SIMDE_TEST_X86_GENERATE_INT_TYPE_FUNCS_(__m256i, 32, 8, simde_mm256_storeu_si256) |
| SIMDE_TEST_X86_GENERATE_INT_TYPE_FUNCS_(__m256i, 64, 4, simde_mm256_storeu_si256) |
| SIMDE_TEST_X86_GENERATE_UINT_TYPE_FUNCS_(__m256i, 8, 32, simde_mm256_storeu_si256) |
| SIMDE_TEST_X86_GENERATE_UINT_TYPE_FUNCS_(__m256i, 16, 16, simde_mm256_storeu_si256) |
| SIMDE_TEST_X86_GENERATE_UINT_TYPE_FUNCS_(__m256i, 32, 8, simde_mm256_storeu_si256) |
| SIMDE_TEST_X86_GENERATE_UINT_TYPE_FUNCS_(__m256i, 64, 4, simde_mm256_storeu_si256) |
| |
| #define simde_test_x86_assert_equal_f32x8(a, b, precision) do { if (simde_test_x86_assert_equal_f32x8_(a, b, simde_test_f32_precision_to_slop(precision), __FILE__, __LINE__, #a, #b)) { return 1; } } while (0) |
| #define simde_test_x86_assert_equal_f64x4(a, b, precision) do { if (simde_test_x86_assert_equal_f64x4_(a, b, simde_test_f64_precision_to_slop(precision), __FILE__, __LINE__, #a, #b)) { return 1; } } while (0) |
| #define simde_test_x86_assert_equal_i8x32(a, b) do { if (simde_test_x86_assert_equal_i8x32_(a, b, __FILE__, __LINE__, #a, #b)) { return 1; } } while (0) |
| #define simde_test_x86_assert_equal_i16x16(a, b) do { if (simde_test_x86_assert_equal_i16x16_(a, b, __FILE__, __LINE__, #a, #b)) { return 1; } } while (0) |
| #define simde_test_x86_assert_equal_i32x8(a, b) do { if (simde_test_x86_assert_equal_i32x8_(a, b, __FILE__, __LINE__, #a, #b)) { return 1; } } while (0) |
| #define simde_test_x86_assert_equal_i64x4(a, b) do { if (simde_test_x86_assert_equal_i64x4_(a, b, __FILE__, __LINE__, #a, #b)) { return 1; } } while (0) |
| #define simde_test_x86_assert_equal_u8x32(a, b) do { if (simde_test_x86_assert_equal_u8x32_(a, b, __FILE__, __LINE__, #a, #b)) { return 1; } } while (0) |
| #define simde_test_x86_assert_equal_u16x16(a, b) do { if (simde_test_x86_assert_equal_u16x16_(a, b, __FILE__, __LINE__, #a, #b)) { return 1; } } while (0) |
| #define simde_test_x86_assert_equal_u32x8(a, b) do { if (simde_test_x86_assert_equal_u32x8_(a, b, __FILE__, __LINE__, #a, #b)) { return 1; } } while (0) |
| #define simde_test_x86_assert_equal_u64x4(a, b) do { if (simde_test_x86_assert_equal_u64x4_(a, b, __FILE__, __LINE__, #a, #b)) { return 1; } } while (0) |
| |
| /* SIMDE_DISABLE_UNWANTED_DIAGNOSTICS */ |
| HEDLEY_DIAGNOSTIC_POP |
| |
| HEDLEY_DIAGNOSTIC_PUSH |
| SIMDE_DIAGNOSTIC_DISABLE_VARIADIC_MACROS_ |
| |
| #define SIMDE_CONSTIFY_256_(func_name, result, default_case, imm, ...) \ |
| do { \ |
| switch(imm) { \ |
| case 0: result = func_name(__VA_ARGS__, 0); break; \ |
| case 1: result = func_name(__VA_ARGS__, 1); break; \ |
| case 2: result = func_name(__VA_ARGS__, 2); break; \ |
| case 3: result = func_name(__VA_ARGS__, 3); break; \ |
| case 4: result = func_name(__VA_ARGS__, 4); break; \ |
| case 5: result = func_name(__VA_ARGS__, 5); break; \ |
| case 6: result = func_name(__VA_ARGS__, 6); break; \ |
| case 7: result = func_name(__VA_ARGS__, 7); break; \ |
| case 8: result = func_name(__VA_ARGS__, 8); break; \ |
| case 9: result = func_name(__VA_ARGS__, 9); break; \ |
| case 10: result = func_name(__VA_ARGS__, 10); break; \ |
| case 11: result = func_name(__VA_ARGS__, 11); break; \ |
| case 12: result = func_name(__VA_ARGS__, 12); break; \ |
| case 13: result = func_name(__VA_ARGS__, 13); break; \ |
| case 14: result = func_name(__VA_ARGS__, 14); break; \ |
| case 15: result = func_name(__VA_ARGS__, 15); break; \ |
| case 16: result = func_name(__VA_ARGS__, 16); break; \ |
| case 17: result = func_name(__VA_ARGS__, 17); break; \ |
| case 18: result = func_name(__VA_ARGS__, 18); break; \ |
| case 19: result = func_name(__VA_ARGS__, 19); break; \ |
| case 20: result = func_name(__VA_ARGS__, 20); break; \ |
| case 21: result = func_name(__VA_ARGS__, 21); break; \ |
| case 22: result = func_name(__VA_ARGS__, 22); break; \ |
| case 23: result = func_name(__VA_ARGS__, 23); break; \ |
| case 24: result = func_name(__VA_ARGS__, 24); break; \ |
| case 25: result = func_name(__VA_ARGS__, 25); break; \ |
| case 26: result = func_name(__VA_ARGS__, 26); break; \ |
| case 27: result = func_name(__VA_ARGS__, 27); break; \ |
| case 28: result = func_name(__VA_ARGS__, 28); break; \ |
| case 29: result = func_name(__VA_ARGS__, 29); break; \ |
| case 30: result = func_name(__VA_ARGS__, 30); break; \ |
| case 31: result = func_name(__VA_ARGS__, 31); break; \ |
| case 32: result = func_name(__VA_ARGS__, 32); break; \ |
| case 33: result = func_name(__VA_ARGS__, 33); break; \ |
| case 34: result = func_name(__VA_ARGS__, 34); break; \ |
| case 35: result = func_name(__VA_ARGS__, 35); break; \ |
| case 36: result = func_name(__VA_ARGS__, 36); break; \ |
| case 37: result = func_name(__VA_ARGS__, 37); break; \ |
| case 38: result = func_name(__VA_ARGS__, 38); break; \ |
| case 39: result = func_name(__VA_ARGS__, 39); break; \ |
| case 40: result = func_name(__VA_ARGS__, 40); break; \ |
| case 41: result = func_name(__VA_ARGS__, 41); break; \ |
| case 42: result = func_name(__VA_ARGS__, 42); break; \ |
| case 43: result = func_name(__VA_ARGS__, 43); break; \ |
| case 44: result = func_name(__VA_ARGS__, 44); break; \ |
| case 45: result = func_name(__VA_ARGS__, 45); break; \ |
| case 46: result = func_name(__VA_ARGS__, 46); break; \ |
| case 47: result = func_name(__VA_ARGS__, 47); break; \ |
| case 48: result = func_name(__VA_ARGS__, 48); break; \ |
| case 49: result = func_name(__VA_ARGS__, 49); break; \ |
| case 50: result = func_name(__VA_ARGS__, 50); break; \ |
| case 51: result = func_name(__VA_ARGS__, 51); break; \ |
| case 52: result = func_name(__VA_ARGS__, 52); break; \ |
| case 53: result = func_name(__VA_ARGS__, 53); break; \ |
| case 54: result = func_name(__VA_ARGS__, 54); break; \ |
| case 55: result = func_name(__VA_ARGS__, 55); break; \ |
| case 56: result = func_name(__VA_ARGS__, 56); break; \ |
| case 57: result = func_name(__VA_ARGS__, 57); break; \ |
| case 58: result = func_name(__VA_ARGS__, 58); break; \ |
| case 59: result = func_name(__VA_ARGS__, 59); break; \ |
| case 60: result = func_name(__VA_ARGS__, 60); break; \ |
| case 61: result = func_name(__VA_ARGS__, 61); break; \ |
| case 62: result = func_name(__VA_ARGS__, 62); break; \ |
| case 63: result = func_name(__VA_ARGS__, 63); break; \ |
| case 64: result = func_name(__VA_ARGS__, 64); break; \ |
| case 65: result = func_name(__VA_ARGS__, 65); break; \ |
| case 66: result = func_name(__VA_ARGS__, 66); break; \ |
| case 67: result = func_name(__VA_ARGS__, 67); break; \ |
| case 68: result = func_name(__VA_ARGS__, 68); break; \ |
| case 69: result = func_name(__VA_ARGS__, 69); break; \ |
| case 70: result = func_name(__VA_ARGS__, 70); break; \ |
| case 71: result = func_name(__VA_ARGS__, 71); break; \ |
| case 72: result = func_name(__VA_ARGS__, 72); break; \ |
| case 73: result = func_name(__VA_ARGS__, 73); break; \ |
| case 74: result = func_name(__VA_ARGS__, 74); break; \ |
| case 75: result = func_name(__VA_ARGS__, 75); break; \ |
| case 76: result = func_name(__VA_ARGS__, 76); break; \ |
| case 77: result = func_name(__VA_ARGS__, 77); break; \ |
| case 78: result = func_name(__VA_ARGS__, 78); break; \ |
| case 79: result = func_name(__VA_ARGS__, 79); break; \ |
| case 80: result = func_name(__VA_ARGS__, 80); break; \ |
| case 81: result = func_name(__VA_ARGS__, 81); break; \ |
| case 82: result = func_name(__VA_ARGS__, 82); break; \ |
| case 83: result = func_name(__VA_ARGS__, 83); break; \ |
| case 84: result = func_name(__VA_ARGS__, 84); break; \ |
| case 85: result = func_name(__VA_ARGS__, 85); break; \ |
| case 86: result = func_name(__VA_ARGS__, 86); break; \ |
| case 87: result = func_name(__VA_ARGS__, 87); break; \ |
| case 88: result = func_name(__VA_ARGS__, 88); break; \ |
| case 89: result = func_name(__VA_ARGS__, 89); break; \ |
| case 90: result = func_name(__VA_ARGS__, 90); break; \ |
| case 91: result = func_name(__VA_ARGS__, 91); break; \ |
| case 92: result = func_name(__VA_ARGS__, 92); break; \ |
| case 93: result = func_name(__VA_ARGS__, 93); break; \ |
| case 94: result = func_name(__VA_ARGS__, 94); break; \ |
| case 95: result = func_name(__VA_ARGS__, 95); break; \ |
| case 96: result = func_name(__VA_ARGS__, 96); break; \ |
| case 97: result = func_name(__VA_ARGS__, 97); break; \ |
| case 98: result = func_name(__VA_ARGS__, 98); break; \ |
| case 99: result = func_name(__VA_ARGS__, 99); break; \ |
| case 100: result = func_name(__VA_ARGS__, 100); break; \ |
| case 101: result = func_name(__VA_ARGS__, 101); break; \ |
| case 102: result = func_name(__VA_ARGS__, 102); break; \ |
| case 103: result = func_name(__VA_ARGS__, 103); break; \ |
| case 104: result = func_name(__VA_ARGS__, 104); break; \ |
| case 105: result = func_name(__VA_ARGS__, 105); break; \ |
| case 106: result = func_name(__VA_ARGS__, 106); break; \ |
| case 107: result = func_name(__VA_ARGS__, 107); break; \ |
| case 108: result = func_name(__VA_ARGS__, 108); break; \ |
| case 109: result = func_name(__VA_ARGS__, 109); break; \ |
| case 110: result = func_name(__VA_ARGS__, 110); break; \ |
| case 111: result = func_name(__VA_ARGS__, 111); break; \ |
| case 112: result = func_name(__VA_ARGS__, 112); break; \ |
| case 113: result = func_name(__VA_ARGS__, 113); break; \ |
| case 114: result = func_name(__VA_ARGS__, 114); break; \ |
| case 115: result = func_name(__VA_ARGS__, 115); break; \ |
| case 116: result = func_name(__VA_ARGS__, 116); break; \ |
| case 117: result = func_name(__VA_ARGS__, 117); break; \ |
| case 118: result = func_name(__VA_ARGS__, 118); break; \ |
| case 119: result = func_name(__VA_ARGS__, 119); break; \ |
| case 120: result = func_name(__VA_ARGS__, 120); break; \ |
| case 121: result = func_name(__VA_ARGS__, 121); break; \ |
| case 122: result = func_name(__VA_ARGS__, 122); break; \ |
| case 123: result = func_name(__VA_ARGS__, 123); break; \ |
| case 124: result = func_name(__VA_ARGS__, 124); break; \ |
| case 125: result = func_name(__VA_ARGS__, 125); break; \ |
| case 126: result = func_name(__VA_ARGS__, 126); break; \ |
| case 127: result = func_name(__VA_ARGS__, 127); break; \ |
| case 128: result = func_name(__VA_ARGS__, 128); break; \ |
| case 129: result = func_name(__VA_ARGS__, 129); break; \ |
| case 130: result = func_name(__VA_ARGS__, 130); break; \ |
| case 131: result = func_name(__VA_ARGS__, 131); break; \ |
| case 132: result = func_name(__VA_ARGS__, 132); break; \ |
| case 133: result = func_name(__VA_ARGS__, 133); break; \ |
| case 134: result = func_name(__VA_ARGS__, 134); break; \ |
| case 135: result = func_name(__VA_ARGS__, 135); break; \ |
| case 136: result = func_name(__VA_ARGS__, 136); break; \ |
| case 137: result = func_name(__VA_ARGS__, 137); break; \ |
| case 138: result = func_name(__VA_ARGS__, 138); break; \ |
| case 139: result = func_name(__VA_ARGS__, 139); break; \ |
| case 140: result = func_name(__VA_ARGS__, 140); break; \ |
| case 141: result = func_name(__VA_ARGS__, 141); break; \ |
| case 142: result = func_name(__VA_ARGS__, 142); break; \ |
| case 143: result = func_name(__VA_ARGS__, 143); break; \ |
| case 144: result = func_name(__VA_ARGS__, 144); break; \ |
| case 145: result = func_name(__VA_ARGS__, 145); break; \ |
| case 146: result = func_name(__VA_ARGS__, 146); break; \ |
| case 147: result = func_name(__VA_ARGS__, 147); break; \ |
| case 148: result = func_name(__VA_ARGS__, 148); break; \ |
| case 149: result = func_name(__VA_ARGS__, 149); break; \ |
| case 150: result = func_name(__VA_ARGS__, 150); break; \ |
| case 151: result = func_name(__VA_ARGS__, 151); break; \ |
| case 152: result = func_name(__VA_ARGS__, 152); break; \ |
| case 153: result = func_name(__VA_ARGS__, 153); break; \ |
| case 154: result = func_name(__VA_ARGS__, 154); break; \ |
| case 155: result = func_name(__VA_ARGS__, 155); break; \ |
| case 156: result = func_name(__VA_ARGS__, 156); break; \ |
| case 157: result = func_name(__VA_ARGS__, 157); break; \ |
| case 158: result = func_name(__VA_ARGS__, 158); break; \ |
| case 159: result = func_name(__VA_ARGS__, 159); break; \ |
| case 160: result = func_name(__VA_ARGS__, 160); break; \ |
| case 161: result = func_name(__VA_ARGS__, 161); break; \ |
| case 162: result = func_name(__VA_ARGS__, 162); break; \ |
| case 163: result = func_name(__VA_ARGS__, 163); break; \ |
| case 164: result = func_name(__VA_ARGS__, 164); break; \ |
| case 165: result = func_name(__VA_ARGS__, 165); break; \ |
| case 166: result = func_name(__VA_ARGS__, 166); break; \ |
| case 167: result = func_name(__VA_ARGS__, 167); break; \ |
| case 168: result = func_name(__VA_ARGS__, 168); break; \ |
| case 169: result = func_name(__VA_ARGS__, 169); break; \ |
| case 170: result = func_name(__VA_ARGS__, 170); break; \ |
| case 171: result = func_name(__VA_ARGS__, 171); break; \ |
| case 172: result = func_name(__VA_ARGS__, 172); break; \ |
| case 173: result = func_name(__VA_ARGS__, 173); break; \ |
| case 174: result = func_name(__VA_ARGS__, 174); break; \ |
| case 175: result = func_name(__VA_ARGS__, 175); break; \ |
| case 176: result = func_name(__VA_ARGS__, 176); break; \ |
| case 177: result = func_name(__VA_ARGS__, 177); break; \ |
| case 178: result = func_name(__VA_ARGS__, 178); break; \ |
| case 179: result = func_name(__VA_ARGS__, 179); break; \ |
| case 180: result = func_name(__VA_ARGS__, 180); break; \ |
| case 181: result = func_name(__VA_ARGS__, 181); break; \ |
| case 182: result = func_name(__VA_ARGS__, 182); break; \ |
| case 183: result = func_name(__VA_ARGS__, 183); break; \ |
| case 184: result = func_name(__VA_ARGS__, 184); break; \ |
| case 185: result = func_name(__VA_ARGS__, 185); break; \ |
| case 186: result = func_name(__VA_ARGS__, 186); break; \ |
| case 187: result = func_name(__VA_ARGS__, 187); break; \ |
| case 188: result = func_name(__VA_ARGS__, 188); break; \ |
| case 189: result = func_name(__VA_ARGS__, 189); break; \ |
| case 190: result = func_name(__VA_ARGS__, 190); break; \ |
| case 191: result = func_name(__VA_ARGS__, 191); break; \ |
| case 192: result = func_name(__VA_ARGS__, 192); break; \ |
| case 193: result = func_name(__VA_ARGS__, 193); break; \ |
| case 194: result = func_name(__VA_ARGS__, 194); break; \ |
| case 195: result = func_name(__VA_ARGS__, 195); break; \ |
| case 196: result = func_name(__VA_ARGS__, 196); break; \ |
| case 197: result = func_name(__VA_ARGS__, 197); break; \ |
| case 198: result = func_name(__VA_ARGS__, 198); break; \ |
| case 199: result = func_name(__VA_ARGS__, 199); break; \ |
| case 200: result = func_name(__VA_ARGS__, 200); break; \ |
| case 201: result = func_name(__VA_ARGS__, 201); break; \ |
| case 202: result = func_name(__VA_ARGS__, 202); break; \ |
| case 203: result = func_name(__VA_ARGS__, 203); break; \ |
| case 204: result = func_name(__VA_ARGS__, 204); break; \ |
| case 205: result = func_name(__VA_ARGS__, 205); break; \ |
| case 206: result = func_name(__VA_ARGS__, 206); break; \ |
| case 207: result = func_name(__VA_ARGS__, 207); break; \ |
| case 208: result = func_name(__VA_ARGS__, 208); break; \ |
| case 209: result = func_name(__VA_ARGS__, 209); break; \ |
| case 210: result = func_name(__VA_ARGS__, 210); break; \ |
| case 211: result = func_name(__VA_ARGS__, 211); break; \ |
| case 212: result = func_name(__VA_ARGS__, 212); break; \ |
| case 213: result = func_name(__VA_ARGS__, 213); break; \ |
| case 214: result = func_name(__VA_ARGS__, 214); break; \ |
| case 215: result = func_name(__VA_ARGS__, 215); break; \ |
| case 216: result = func_name(__VA_ARGS__, 216); break; \ |
| case 217: result = func_name(__VA_ARGS__, 217); break; \ |
| case 218: result = func_name(__VA_ARGS__, 218); break; \ |
| case 219: result = func_name(__VA_ARGS__, 219); break; \ |
| case 220: result = func_name(__VA_ARGS__, 220); break; \ |
| case 221: result = func_name(__VA_ARGS__, 221); break; \ |
| case 222: result = func_name(__VA_ARGS__, 222); break; \ |
| case 223: result = func_name(__VA_ARGS__, 223); break; \ |
| case 224: result = func_name(__VA_ARGS__, 224); break; \ |
| case 225: result = func_name(__VA_ARGS__, 225); break; \ |
| case 226: result = func_name(__VA_ARGS__, 226); break; \ |
| case 227: result = func_name(__VA_ARGS__, 227); break; \ |
| case 228: result = func_name(__VA_ARGS__, 228); break; \ |
| case 229: result = func_name(__VA_ARGS__, 229); break; \ |
| case 230: result = func_name(__VA_ARGS__, 230); break; \ |
| case 231: result = func_name(__VA_ARGS__, 231); break; \ |
| case 232: result = func_name(__VA_ARGS__, 232); break; \ |
| case 233: result = func_name(__VA_ARGS__, 233); break; \ |
| case 234: result = func_name(__VA_ARGS__, 234); break; \ |
| case 235: result = func_name(__VA_ARGS__, 235); break; \ |
| case 236: result = func_name(__VA_ARGS__, 236); break; \ |
| case 237: result = func_name(__VA_ARGS__, 237); break; \ |
| case 238: result = func_name(__VA_ARGS__, 238); break; \ |
| case 239: result = func_name(__VA_ARGS__, 239); break; \ |
| case 240: result = func_name(__VA_ARGS__, 240); break; \ |
| case 241: result = func_name(__VA_ARGS__, 241); break; \ |
| case 242: result = func_name(__VA_ARGS__, 242); break; \ |
| case 243: result = func_name(__VA_ARGS__, 243); break; \ |
| case 244: result = func_name(__VA_ARGS__, 244); break; \ |
| case 245: result = func_name(__VA_ARGS__, 245); break; \ |
| case 246: result = func_name(__VA_ARGS__, 246); break; \ |
| case 247: result = func_name(__VA_ARGS__, 247); break; \ |
| case 248: result = func_name(__VA_ARGS__, 248); break; \ |
| case 249: result = func_name(__VA_ARGS__, 249); break; \ |
| case 250: result = func_name(__VA_ARGS__, 250); break; \ |
| case 251: result = func_name(__VA_ARGS__, 251); break; \ |
| case 252: result = func_name(__VA_ARGS__, 252); break; \ |
| case 253: result = func_name(__VA_ARGS__, 253); break; \ |
| case 254: result = func_name(__VA_ARGS__, 254); break; \ |
| case 255: result = func_name(__VA_ARGS__, 255); break; \ |
| default: result = default_case; break; \ |
| } \ |
| } while (0) |
| |
| HEDLEY_DIAGNOSTIC_POP |
| |
| |
| #endif /* !defined(SIMDE_TEST_X86_TEST_AVX_H) */ |