Lines Matching +full:- +full:n
24 int n; member
35 static void dump_ymm(const char *name, int n, const v4di *r, int ff) in dump_ymm() argument
37 printf("%s%d = %016lx %016lx %016lx %016lx\n", in dump_ymm()
38 name, n, r->q3, r->q2, r->q1, r->q0); in dump_ymm()
42 printf(" %16g %16g %16g %16g\n", in dump_ymm()
47 printf(" %8g %8g %8g %8g %8g %8g %8g %8g\n", in dump_ymm()
57 dump_ymm("ymm", i, &s->ymm[i], 0); in dump_regs()
60 dump_ymm("mem", i, &s->mem0[i], 0); in dump_regs()
68 if (a->mm[i] != b->mm[i]) { in compare_state()
69 printf("MM%d = %016lx\n", i, b->mm[i]); in compare_state()
73 if (a->r[i] != b->r[i]) { in compare_state()
74 printf("r%d = %016lx\n", i, b->r[i]); in compare_state()
78 if (memcmp(&a->ymm[i], &b->ymm[i], 32)) { in compare_state()
79 dump_ymm("ymm", i, &b->ymm[i], a->ff); in compare_state()
83 if (memcmp(&a->mem0[i], &a->mem[i], 32)) { in compare_state()
84 dump_ymm("mem", i, &a->mem[i], a->ff); in compare_state()
87 if (a->flags != b->flags) { in compare_state()
88 printf("FLAGS = %016lx\n", b->flags); in compare_state()
92 #define LOADMM(r, o) "movq " #r ", " #o "[%0]\n\t"
93 #define LOADYMM(r, o) "vmovdqa " #r ", " #o "[%0]\n\t"
94 #define STOREMM(r, o) "movq " #o "[%1], " #r "\n\t"
95 #define STOREYMM(r, o) "vmovdqa " #o "[%1], " #r "\n\t"
122 #define LOADREG(r, o) "mov " #r ", " #o "[rax]\n\t"
123 #define STOREREG(r, o) "mov " #o "[rax], " #r "\n\t"
142 reg_state *init = t->init; in run_test()
143 memcpy(init->mem, init->mem0, sizeof(init->mem)); in run_test()
144 printf("%5d %s\n", t->n, t->s); in run_test()
148 "sub rsp, 128\n\t" in run_test()
149 "push rax\n\t" in run_test()
150 "push rbx\n\t" in run_test()
151 "push rcx\n\t" in run_test()
152 "push rdx\n\t" in run_test()
153 "push %1\n\t" in run_test()
154 "push %2\n\t" in run_test()
155 "mov rax, %0\n\t" in run_test()
156 "pushf\n\t" in run_test()
157 "pop rbx\n\t" in run_test()
158 "shr rbx, 8\n\t" in run_test()
159 "shl rbx, 8\n\t" in run_test()
160 "mov rcx, 0x2c0[rax]\n\t" in run_test()
161 "and rcx, 0xff\n\t" in run_test()
162 "or rbx, rcx\n\t" in run_test()
163 "push rbx\n\t" in run_test()
164 "popf\n\t" in run_test()
166 "mov rax, 0x240[rax]\n\t" in run_test()
167 "call [rsp]\n\t" in run_test()
168 "mov [rsp], rax\n\t" in run_test()
169 "mov rax, 8[rsp]\n\t" in run_test()
171 "mov rbx, [rsp]\n\t" in run_test()
172 "mov 0x240[rax], rbx\n\t" in run_test()
173 "mov rbx, 0\n\t" in run_test()
174 "mov 0x270[rax], rbx\n\t" in run_test()
175 "mov 0x278[rax], rbx\n\t" in run_test()
176 "pushf\n\t" in run_test()
177 "pop rbx\n\t" in run_test()
178 "and rbx, 0xff\n\t" in run_test()
179 "mov 0x2c0[rax], rbx\n\t" in run_test()
180 "add rsp, 16\n\t" in run_test()
181 "pop rdx\n\t" in run_test()
182 "pop rcx\n\t" in run_test()
183 "pop rbx\n\t" in run_test()
184 "pop rax\n\t" in run_test()
185 "add rsp, 128\n\t" in run_test()
188 : : "r"(init), "r"(&result), "r"(t->fn) in run_test()
200 #define TEST(n, cmd, type) \ argument
201 static void __attribute__((naked)) test_##n(void) \
206 #include "test-avx.h"
210 #define TEST(n, cmd, type) {n, test_##n, cmd, &init##type}, argument
211 #include "test-avx.h"
212 {-1, NULL, "", NULL}
218 for (t = test_table; t->fn; t++) { in run_all()
226 float val_f32[] = {2.0, -1.0, 4.8, 0.8, 3, -42.0, 5e6, 7.5, 8.3};
227 double val_f64[] = {2.0, -1.0, 4.8, 0.8, 3, -42.0, 5e6, 7.5};
239 /* &gather_mem[0x10] is 512 bytes from the base; indices must be >=-64, <64
257 static int n; in init_f32reg() local
261 v[i] = val_f32[n++]; in init_f32reg()
262 if (n == ARRAY_LEN(val_f32)) { in init_f32reg()
263 n = 0; in init_f32reg()
271 static int n; in init_f64reg() local
275 v[i] = val_f64[n++]; in init_f64reg()
276 if (n == ARRAY_LEN(val_f64)) { in init_f64reg()
277 n = 0; in init_f64reg()
286 static int n; in init_intreg() local
288 r->q0 = val_i64[n].q0 ^ mask; in init_intreg()
289 r->q1 = val_i64[n].q1 ^ mask; in init_intreg()
290 r->q2 = val_i64[n].q2 ^ mask; in init_intreg()
291 r->q3 = val_i64[n].q3 ^ mask; in init_intreg()
292 n++; in init_intreg()
293 if (n == ARRAY_LEN(val_i64)) { in init_intreg()
294 n = 0; in init_intreg()
303 s->r[3] = (uint64_t)&s->mem[0]; /* rdx */ in init_all()
304 s->r[4] = (uint64_t)&gather_mem[ARRAY_LEN(gather_mem) / 2]; /* rsi */ in init_all()
305 s->r[5] = (uint64_t)&s->mem[2]; /* rdi */ in init_all()
306 s->flags = 2; in init_all()
308 s->ymm[i] = deadbeef; in init_all()
310 s->ymm[13] = indexd; in init_all()
311 s->ymm[14] = indexq; in init_all()
313 s->mem0[i] = deadbeef; in init_all()
328 printf("Int:\n"); in main()
339 printf("F16:\n"); in main()
350 printf("F32:\n"); in main()
361 printf("F64:\n"); in main()
369 int n = atoi(argv[1]); in main() local
370 run_test(&test_table[n]); in main()