public override void GenerateX86NasmAsm(StringBuilder sb) { string[] setMxcsrInstrs = new string[2]; setMxcsrInstrs[0] = " mov r15, 0x1f80\n mov [r8], r15\n ldmxcsr [r8]\n addss xmm0, xmm1"; // default setMxcsrInstrs[1] = " mov r15, 0x9fc0\n mov [r8], r15\n ldmxcsr [r8]\n addss xmm0, xmm1"; // set denormals are zero, flush to zero UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, setMxcsrInstrs, setMxcsrInstrs, false); }
public override void GenerateX86GccAsm(StringBuilder sb) { string initInstrs = " vmovups (%r8), %ymm1\n" + " vmovaps %ymm1, %ymm0\n" + " vmovaps %ymm1, %ymm2\n" + " vaddps %ymm1, %ymm2, %ymm3\n" + " vaddps %ymm1, %ymm3, %ymm4\n" + " vaddps %ymm1, %ymm4, %ymm5\n" + " vaddps %ymm1, %ymm5, %ymm6\n" + " vaddps %ymm1, %ymm1, %ymm7\n" + " vaddps %ymm1, %ymm2, %ymm8\n" + " vaddps %ymm1, %ymm3, %ymm9\n" + " vaddps %ymm2, %ymm4, %ymm10\n" + " vaddps %ymm2, %ymm5, %ymm11\n" + " vaddps %ymm2, %ymm1, %ymm12\n" + " vaddps %ymm2, %ymm2, %ymm13\n" + " vaddps %ymm2, %ymm3, %ymm14\n" + " vaddps %ymm2, %ymm4, %ymm15\n"; string postLoadInstr = " vaddps %ymm1, %ymm2, %ymm3"; string[] unrolledAdds = new string[11]; unrolledAdds[0] = " add %r11, %r8"; unrolledAdds[1] = " add %r11, %r14"; unrolledAdds[2] = " add %r11, %r13"; unrolledAdds[3] = " add %r11, %r12"; unrolledAdds[4] = " add %r11, %r15"; unrolledAdds[5] = " add %r11, %r8"; unrolledAdds[6] = " add %r11, %r14"; unrolledAdds[7] = " add %r11, %r13"; unrolledAdds[8] = " add %r11, %r15"; unrolledAdds[9] = " add %r11, %r12"; unrolledAdds[10] = " add %r11, %r8"; UarchTestHelpers.GenerateX86AsmStructureTestFuncs(sb, this.Counts, this.Prefix, unrolledAdds, unrolledAdds, true, initInstrs: initInstrs, postLoadInstrs1: postLoadInstr, postLoadInstrs2: postLoadInstr); }
public override void GenerateX86GccAsm(StringBuilder sb) { string[] dependentLoads = new string[1]; dependentLoads[0] = " mov (%r8, %rdx, 4), %r15"; UarchTestHelpers.GenerateX86AsmDivStructureTestFuncs(sb, this.Counts, this.Prefix, dependentLoads, dependentLoads, false); }
public override void GenerateX86GccAsm(StringBuilder sb) { string[] setMxcsrInstrs = new string[2]; setMxcsrInstrs[0] = " mov $0x1f80, %r15\n mov %r15, (%r8)\n ldmxcsr (%r8)\n addss %xmm0, %xmm1"; // default setMxcsrInstrs[1] = " mov $0x9fc0, %r15\n mov %r15, (%r8)\n ldmxcsr (%r8)\n addss %xmm0, %xmm1"; // set denormals are zero, flush to zero UarchTestHelpers.GenerateX86AsmStructureTestFuncs(sb, this.Counts, this.Prefix, setMxcsrInstrs, setMxcsrInstrs, false); }
public override void GenerateX86NasmAsm(StringBuilder sb) { string[] dependentLoads = new string[1]; dependentLoads[0] = " mov r15, [r8 + rdx * 4]"; UarchTestHelpers.GenerateX86NasmDivStructureTestFuncs(sb, this.Counts, this.Prefix, dependentLoads, dependentLoads, false); }
public override void GenerateX86NasmAsm(StringBuilder sb) { string initInstrs = " vmovups ymm1, [r8]\n" + " vmovaps ymm0, ymm1\n" + " vmovaps ymm0, ymm2\n" + " vaddps ymm3, ymm1, ymm2\n" + " vaddps ymm4, ymm1, ymm3\n" + " vaddps ymm5, ymm1, ymm4\n" + " vaddps ymm6, ymm1, ymm5\n" + " vaddps ymm7, ymm1, ymm1\n" + " vaddps ymm8, ymm1, ymm2\n" + " vaddps ymm9, ymm1, ymm3\n" + " vaddps ymm10, ymm2, ymm4\n" + " vaddps ymm11, ymm2, ymm5\n" + " vaddps ymm12, ymm2, ymm1\n" + " vaddps ymm13, ymm2, ymm2\n" + " vaddps ymm14, ymm2, ymm3\n" + " vaddps ymm15, ymm2, ymm4\n"; string postLoadInstr = " vaddps ymm3, ymm1, ymm2"; string[] unrolledAdds = new string[11]; unrolledAdds[0] = " add r8, r11"; unrolledAdds[1] = " add r14, r11"; unrolledAdds[2] = " add r13, r11"; unrolledAdds[3] = " add r12, r11"; unrolledAdds[4] = " add r11, r11"; unrolledAdds[5] = " add r8, r11"; unrolledAdds[6] = " add r15, r11"; unrolledAdds[7] = " add r14, r11"; unrolledAdds[8] = " add r13, r11"; unrolledAdds[9] = " add r12, r11"; unrolledAdds[10] = " add r8, r11"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, unrolledAdds, unrolledAdds, true, initInstrs: initInstrs, postLoadInstrs1: postLoadInstr, postLoadInstrs2: postLoadInstr); }
public CvtSchedTest(int low, int high, int step) { this.Counts = UarchTestHelpers.GenerateCountArray(low, high, step); this.Prefix = "cvtsched"; this.Description = "I2F (cvtsi2ss) Scheduler Capacity Test"; this.FunctionDefinitionParameters = "uint64_t iterations, int *arr"; this.GetFunctionCallParameters = "structIterations, A"; }
public LdqStqTest(int low, int high, int step) { this.Counts = UarchTestHelpers.GenerateCountArray(low, high, step); this.Prefix = "mixldqstq"; this.Description = "Mixed Load/Store Queue Test (mem ops pending retire)"; this.FunctionDefinitionParameters = "uint64_t iterations, int *arr, int *arr1"; this.GetFunctionCallParameters = "structIterations, A, B"; }
public override void GenerateArmAsm(StringBuilder sb) { string[] instrs = new string[4]; instrs[0] = " str x15, [x2]"; instrs[1] = " ldr x14, [x1]"; instrs[2] = " str x13, [x2]"; instrs[3] = " ldr x12, [x1]"; UarchTestHelpers.GenerateArmAsmStructureTestFuncs(sb, this.Counts, this.Prefix, instrs, instrs, true); }
public override void GenerateX86GccAsm(StringBuilder sb) { string[] instrs = new string[4]; instrs[0] = " mov %r15, (%r8)"; instrs[1] = " mov (%rdx), %r14"; instrs[2] = " mov %r13, (%r8)"; instrs[3] = " mov (%rdx), %r12"; UarchTestHelpers.GenerateX86AsmStructureTestFuncs(sb, this.Counts, this.Prefix, instrs, instrs, true); }
public override void GenerateX86NasmAsm(StringBuilder sb) { string[] instrs = new string[4]; instrs[0] = " mov [r8], r15"; instrs[1] = " mov r14, [rdx]"; instrs[2] = " mov [r8], r13"; instrs[3] = " mov r12, [rdx]"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, instrs, instrs, true); }
public StqTest(int low, int high, int step) { this.Counts = UarchTestHelpers.GenerateCountArray(low, high, step); this.Prefix = "stq"; this.Description = "Store Queue Test (stores pending retire)"; this.FunctionDefinitionParameters = "uint64_t iterations, int *arr, int *arr1"; this.GetFunctionCallParameters = "structIterations, A, B"; this.DivideTimeByCount = false; }
public LdmTest(int low, int high, int step) { this.Counts = UarchTestHelpers.GenerateCountArray(low, high, step); this.Prefix = "ldm"; this.Description = "Integer (add) without Load Dependency Matrix Scheduler Capacity Test"; this.FunctionDefinitionParameters = "uint64_t iterations, int *arr"; this.GetFunctionCallParameters = "structIterations, A"; this.DivideTimeByCount = false; }
public MixLoadStoreSchedTest(int low, int high, int step) { this.Counts = UarchTestHelpers.GenerateCountArray(low, high, step); this.Prefix = "mixloadstoresched"; this.Description = "Mixed Load/Store (Address Dependency) scheduler capacity test"; this.FunctionDefinitionParameters = "uint64_t iterations, int *arr, int *arr2"; this.GetFunctionCallParameters = "structIterations, A, B"; this.DivideTimeByCount = false; }
public override void GenerateX86NasmAsm(StringBuilder sb) { string[] unrolledLoads = new string[4]; unrolledLoads[0] = " mov [r8], r15"; unrolledLoads[1] = " mov [r8], r14"; unrolledLoads[2] = " mov [r8], r13"; unrolledLoads[3] = " mov [r8], r12"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, unrolledLoads, unrolledLoads, true); }
public MmxRfTest(int low, int high, int step) { this.Counts = UarchTestHelpers.GenerateCountArray(low, high, step); this.Prefix = "mmxrf"; this.Description = "64-bit MMX RF Capacity Test. x86 only"; this.FunctionDefinitionParameters = "uint64_t iterations, int *arr, int *arr2"; this.GetFunctionCallParameters = "structIterations, A, B"; this.DivideTimeByCount = false; }
public override void GenerateArmAsm(StringBuilder sb) { string[] unrolledAdds = new string[4]; unrolledAdds[0] = " fadd v20.4s, v15.4s, v16.4s"; unrolledAdds[1] = " fadd v17.4s, v15.4s, v16.4s"; unrolledAdds[2] = " fadd v18.4s, v15.4s, v16.4s"; unrolledAdds[3] = " fadd v19.4s, v15.4s, v16.4s"; UarchTestHelpers.GenerateArmAsmFpSchedTestFuncs(sb, this.Counts, this.Prefix, unrolledAdds, unrolledAdds); }
public override void GenerateArmAsm(StringBuilder sb) { string[] unrolledAdds = new string[4]; unrolledAdds[0] = " add v15.2s, v15.2s, v19.2s"; unrolledAdds[1] = " add v16.2s, v16.2s, v19.2s"; unrolledAdds[2] = " add v17.2s, v17.2s, v19.2s"; unrolledAdds[3] = " add v18.2s, v18.2s, v19.2s"; UarchTestHelpers.GenerateArmAsmStructureTestFuncs(sb, this.Counts, this.Prefix, unrolledAdds, unrolledAdds); }
public NotIntRfTest(int low, int high, int step) { this.Counts = UarchTestHelpers.GenerateCountArray(low, high, step); this.Prefix = "notintrf"; this.Description = "Integer RF Test with not (no setting flags)"; this.FunctionDefinitionParameters = "uint64_t iterations, int *arr"; this.GetFunctionCallParameters = "structIterations, A"; this.DivideTimeByCount = false; }
public FpRfTest(int low, int high, int step) { this.Counts = UarchTestHelpers.GenerateCountArray(low, high, step); this.Prefix = "fprf"; this.Description = "FP (64-bit scalar) RF Test"; this.FunctionDefinitionParameters = "uint64_t iterations, int *arr, float *floatArr"; this.GetFunctionCallParameters = "structIterations, A, fpArr"; this.DivideTimeByCount = false; }
public MixMulBtsSchedTest(int low, int high, int step) { this.Counts = UarchTestHelpers.GenerateCountArray(low, high, step); this.Prefix = "mixmulbtssched"; this.Description = "Mixed Multiply/BTS Scheduler Capacity Test"; this.FunctionDefinitionParameters = "uint64_t iterations, int *arr"; this.GetFunctionCallParameters = "structIterations, A"; this.DivideTimeByCount = false; }
public override void GenerateX86NasmAsm(StringBuilder sb) { string[] unrolledAdds = new string[4]; unrolledAdds[0] = " vaddps ymm1, ymm1, ymm0"; unrolledAdds[1] = " vaddps ymm2, ymm2, ymm0"; unrolledAdds[2] = " vaddps ymm3, ymm3, ymm0"; unrolledAdds[3] = " vaddps ymm4, ymm4, ymm0"; UarchTestHelpers.GenerateX86NasmFp256SchedTestFuncs(sb, this.Counts, this.Prefix, unrolledAdds, unrolledAdds); }
public override void GenerateX86GccAsm(StringBuilder sb) { string[] unrolledLoads = new string[4]; unrolledLoads[0] = " mov %r15, (%r8)"; unrolledLoads[1] = " mov %r14, (%r8)"; unrolledLoads[2] = " mov %r13, (%r8)"; unrolledLoads[3] = " mov %r12, (%r8)"; UarchTestHelpers.GenerateX86AsmStructureTestFuncs(sb, this.Counts, this.Prefix, unrolledLoads, unrolledLoads, true); }
public JumpNsqTest(int low, int high, int step) { this.Counts = UarchTestHelpers.GenerateCountArray(low, high, step); this.Prefix = "jmpnsq"; this.Description = "Not-taken Jump Scheduler Capacity Test, Excluding NSQ"; this.FunctionDefinitionParameters = "uint64_t iterations, int *arr"; this.GetFunctionCallParameters = "structIterations, A"; this.DivideTimeByCount = false; }
public override void GenerateArmAsm(StringBuilder sb) { string[] unrolledLoads = new string[4]; unrolledLoads[0] = " str x15, [x2]"; unrolledLoads[1] = " str x14, [x2]"; unrolledLoads[2] = " str x13, [x2]"; unrolledLoads[3] = " str x12, [x2]"; UarchTestHelpers.GenerateArmAsmStructureTestFuncs(sb, this.Counts, this.Prefix, unrolledLoads, unrolledLoads, true); }
public StoreSchedTest(int low, int high, int step) { this.Counts = UarchTestHelpers.GenerateCountArray(low, high, step); this.Prefix = "storesched"; this.Description = "Store Address Scheduler Capacity Test"; this.FunctionDefinitionParameters = "uint64_t iterations, int count, int *arr2"; this.GetFunctionCallParameters = "structIterations, list_size, B"; this.DivideTimeByCount = false; }
public FpStoreDataAddNsqTest(int low, int high, int step) { this.Counts = UarchTestHelpers.GenerateCountArray(low, high, step); this.Prefix = "fpstoredataaddnsq"; this.Description = "Store FP 32-bit Data + addss Scheduler Capacity Test, Excluding NSQ. Does storedata share a scheduler with FP add?"; this.FunctionDefinitionParameters = "uint64_t iterations, int *arr, int *arr1"; this.GetFunctionCallParameters = "structIterations, A, B"; this.DivideTimeByCount = false; }
public Fadd256SchedTest(int low, int high, int step) { this.Counts = UarchTestHelpers.GenerateCountArray(low, high, step); this.Prefix = "fadd256sched"; this.Description = "256-bit FADD Scheduler Capacity Test, 128-bit on ARM"; this.FunctionDefinitionParameters = "uint64_t iterations, int *arr, float *floatArr"; this.GetFunctionCallParameters = "structIterations, A, fpArr"; this.DivideTimeByCount = false; }
public Add128SchedTest(int low, int high, int step) { this.Counts = UarchTestHelpers.GenerateCountArray(low, high, step); this.Prefix = "add128sched"; this.Description = "128-bit Integer Add Scheduler Capacity Test"; this.FunctionDefinitionParameters = "uint64_t iterations, int *arr, int *arr2"; this.GetFunctionCallParameters = "structIterations, A, B"; this.DivideTimeByCount = false; }
public MxcsrTest(int low, int high, int step) { this.Counts = UarchTestHelpers.GenerateCountArray(low, high, step); this.Prefix = "mxcsrrename"; this.Description = "MXCSR renamed registers"; this.FunctionDefinitionParameters = "uint64_t iterations, int *arr, int *arr1"; this.GetFunctionCallParameters = "structIterations, A, B"; this.DivideTimeByCount = false; }