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 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 GenerateX86NasmAsm(StringBuilder sb) { string postLoadInstr1 = " mov r15, rdi"; string postLoadInstr2 = " mov r15, rsi"; string[] rors = new string[1]; rors[0] = " ror r15, 1"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, rors, rors, false, postLoadInstrs1: postLoadInstr1, postLoadInstrs2: postLoadInstr2); }
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 override void GenerateX86NasmAsm(StringBuilder sb) { string[] unrolledAdds = new string[4]; unrolledAdds[0] = " kaddb k1, k1, k0"; unrolledAdds[1] = " kaddb k2, k2, k0"; unrolledAdds[2] = " kaddb k3, k3, k0"; unrolledAdds[3] = " kaddb k4, k4, k0"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, unrolledAdds, unrolledAdds, 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 override void GenerateX86NasmAsm(StringBuilder sb) { string[] unrolledJumps = new string[1]; unrolledJumps[0] = " cmp rdi, rsi\n je jumpsched_reallybadthing"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, unrolledJumps, unrolledJumps, false); sb.AppendLine("jumpsched_reallybadthing:"); sb.AppendLine(" int3"); }
public override void GenerateX86NasmAsm(StringBuilder sb) { string[] unrolledAdds = new string[4]; unrolledAdds[0] = " add r15, r11"; unrolledAdds[1] = " add r14, r11"; unrolledAdds[2] = " add r13, r11"; unrolledAdds[3] = " add r12, r11"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, unrolledAdds, unrolledAdds, true); }
public override void GenerateX86NasmAsm(StringBuilder sb) { string postLoadInstr1 = " movq xmm0, rdi\n pshufd xmm0, xmm0, 0\n"; string postLoadInstr2 = " movq xmm0, rsi\n pshufd xmm0, xmm0, 0\n"; string[] unrolledAdds = new string[4]; unrolledAdds[0] = " paddd xmm1, xmm0"; unrolledAdds[1] = " paddd xmm2, xmm0"; unrolledAdds[2] = " paddd xmm3, xmm0"; unrolledAdds[3] = " paddd xmm4, xmm0"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, unrolledAdds, unrolledAdds, postLoadInstrs1: postLoadInstr1, postLoadInstrs2: postLoadInstr2); }
public override void GenerateX86NasmAsm(StringBuilder sb) { string postLoadInstr1 = " mov r15, rdi"; string postLoadInstr2 = " mov r15, rsi"; string[] instrs = new string[2]; instrs[0] = " bts r15, rdi"; instrs[1] = " imul r12d, edi"; string[] instrs1 = new string[2]; instrs1[0] = " bts r15, rsi"; instrs1[1] = " imul r11d, esi"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, instrs, instrs1, false, postLoadInstrs1: postLoadInstr1, postLoadInstrs2: postLoadInstr2); }
public override void GenerateX86NasmAsm(StringBuilder sb) { string initInstrs = " vpcmpeqd xmm1, xmm1, xmm1\n vpxor xmm0, xmm0, xmm1"; string postLoadInstr1 = " cvtsi2ss xmm0, rdi"; string postLoadInstr2 = " cvtsi2ss xmm0, rsi"; string[] dependentStores = new string[4]; dependentStores[0] = " movups [r8], xmm0"; dependentStores[1] = " movups [r8 + r14 * 8], xmm0"; dependentStores[2] = " movups [r8 + r13 * 8], xmm0"; dependentStores[3] = " movups [r8 + r12 * 8], xmm0"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, dependentStores, dependentStores, false, initInstrs, postLoadInstr1, postLoadInstr2); }
public override void GenerateX86NasmAsm(StringBuilder sb) { string[] unrolledInstrs = new string[4]; unrolledInstrs[0] = " cvtsi2ss xmm1, rdi"; unrolledInstrs[1] = " cvtsi2ss xmm2, rdi"; unrolledInstrs[2] = " cvtsi2ss xmm3, rdi"; unrolledInstrs[3] = " cvtsi2ss xmm4, rdi"; string[] unrolledInstrs1 = new string[4]; unrolledInstrs1[0] = " cvtsi2ss xmm1, rsi"; unrolledInstrs1[1] = " cvtsi2ss xmm2, rsi"; unrolledInstrs1[2] = " cvtsi2ss xmm3, rsi"; unrolledInstrs1[3] = " cvtsi2ss xmm4, rsi"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, unrolledInstrs, unrolledInstrs1, false); }
public override void GenerateX86NasmAsm(StringBuilder sb) { string initInstrs = " movss xmm1, [r8]\n" + " movss xmm2, [r8 + 4]\n" + " movss xmm3, [r8 + 8]\n" + " movss xmm4, [r8 + 12]\n" + " movss xmm5, [r8 + 16]\n"; string[] unrolledAdds = new string[4]; unrolledAdds[0] = " addss xmm2, xmm1"; unrolledAdds[1] = " addss xmm3, xmm1"; unrolledAdds[2] = " addss xmm4, xmm1"; unrolledAdds[3] = " addss xmm5, xmm1"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, unrolledAdds, unrolledAdds, false, initInstrs); }
public override void GenerateX86NasmAsm(StringBuilder sb) { string initInstrs = " movq mm0, [rdx]\n" + " movq mm1, [rdx + 8]\n" + " movq mm2, [rdx + 16]\n" + " movq mm3, [rdx + 24]\n" + " movq mm4, [rdx + 32]\n"; string[] unrolledAdds = new string[4]; unrolledAdds[0] = " paddw mm1, mm0"; unrolledAdds[1] = " paddw mm2, mm0"; unrolledAdds[2] = " paddw mm3, mm0"; unrolledAdds[3] = " paddw mm4, mm0"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, unrolledAdds, unrolledAdds, initInstrs: initInstrs); }
public override void GenerateX86NasmAsm(StringBuilder sb) { string[] dependentStores = new string[4]; dependentStores[0] = " mov [r8 + rdi * 4], r15"; dependentStores[1] = " mov [r8 + rdi * 4], r15"; dependentStores[2] = " mov [r8 + rdi * 4], r15"; dependentStores[3] = " mov [r8 + rdi * 4], r15"; string[] dependentStores1 = new string[4]; dependentStores1[0] = " mov [r8 + rsi * 4], r11"; dependentStores1[1] = " mov [r8 + rsi * 4], r11"; dependentStores1[2] = " mov [r8 + rsi * 4], r11"; dependentStores1[3] = " mov [r8 + rsi * 4], r11"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, dependentStores, dependentStores1, false); }
public override void GenerateX86NasmAsm(StringBuilder sb) { string initInstrs = " vmovdqu ymm0, [r8]\n" + " vmovdqa ymm1, ymm0\n" + " vmovdqa ymm2, ymm0\n" + " vmovdqa ymm3, ymm0\n" + " vmovdqa ymm4, ymm0\n"; string[] unrolledAdds = new string[4]; unrolledAdds[0] = " vpaddd ymm1, ymm1, ymm0"; unrolledAdds[1] = " vpaddd ymm2, ymm2, ymm0"; unrolledAdds[2] = " vpaddd ymm3, ymm3, ymm0"; unrolledAdds[3] = " vpaddd ymm4, ymm4, ymm0"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, unrolledAdds, unrolledAdds, initInstrs: initInstrs); }
public override void GenerateX86NasmAsm(StringBuilder sb) { string[] unrolledMuls = new string[4]; unrolledMuls[0] = " imul r15, rdi"; unrolledMuls[1] = " imul r14, rdi"; unrolledMuls[2] = " imul r13, rdi"; unrolledMuls[3] = " imul r12, rdi"; string[] unrolledMuls1 = new string[4]; unrolledMuls1[0] = " imul r15, rsi"; unrolledMuls1[1] = " imul r14, rsi"; unrolledMuls1[2] = " imul r13, rsi"; unrolledMuls1[3] = " imul r12, rsi"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, unrolledMuls, unrolledMuls, false); }
public override void GenerateX86NasmAsm(StringBuilder sb) { string[] instrs = new string[4]; instrs[0] = " pdep r15, rdi, r14"; instrs[1] = " pdep r15, rdi, r13"; instrs[2] = " pdep r15, rdi, r12"; instrs[3] = " pdep r15, rdi, r11"; string[] instrs1 = new string[4]; instrs1[0] = " pdep r15, rsi, r14"; instrs1[1] = " pdep r15, rsi, r13"; instrs1[2] = " pdep r15, rsi, r12"; instrs1[3] = " pdep r15, rsi, r11"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, instrs, instrs1, false); }
public override void GenerateX86NasmAsm(StringBuilder sb) { // todo string[] dependentLoads = new string[4]; dependentLoads[0] = " mov r15, [r8 + rdi * 4]"; dependentLoads[1] = " mov r14, [r8 + rdi * 4]"; dependentLoads[2] = " mov r13, [r8 + rdi * 4]"; dependentLoads[3] = " mov r12, [r8 + rdi * 4]"; string[] dependentLoads1 = new string[4]; dependentLoads1[0] = " mov r15, [r8 + rsi * 4]"; dependentLoads1[1] = " mov r14, [r8 + rsi * 4]"; dependentLoads1[2] = " mov r13, [r8 + rsi * 4]"; dependentLoads1[3] = " mov r12, [r8 + rsi * 4]"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, dependentLoads, dependentLoads1, false); }
public override void GenerateX86NasmAsm(StringBuilder sb) { // todo im tired string[] unrolledAdds = new string[4]; unrolledAdds[0] = " add r15, rdi"; unrolledAdds[1] = " add r14, rdi"; unrolledAdds[2] = " add r13, rdi"; unrolledAdds[3] = " add r12, rdi"; string[] unrolledAdds1 = new string[4]; unrolledAdds1[0] = " add r15, rsi"; unrolledAdds1[1] = " add r14, rsi"; unrolledAdds1[2] = " add r13, rsi"; unrolledAdds1[3] = " add r12, rsi"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, unrolledAdds, unrolledAdds1, false); }
public override void GenerateX86NasmAsm(StringBuilder sb) { string initInstrs = " movss xmm1, [r8]\n" + " movss xmm2, [r8 + 4]\n" + " movss xmm3, [r8 + 8]\n" + " movss xmm4, [r8 + 12]\n" + " movss xmm5, [r8 + 16]\n"; string[] instrs = new string[8]; instrs[0] = "add r14, r15"; instrs[1] = "addss xmm2, xmm1"; instrs[2] = "add r13, r15"; instrs[3] = "addss xmm3, xmm1"; instrs[4] = "add r12, r15"; instrs[5] = "addss xmm4, xmm1"; instrs[6] = "add r11, r15"; instrs[7] = "addss xmm5, xmm1"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, instrs, instrs, true, initInstrs); }
public override void GenerateX86NasmAsm(StringBuilder sb) { string postLoadInstr1 = " add r11, rdi"; string[] unrolledAdds = new string[4]; unrolledAdds[0] = " add r15, r11"; unrolledAdds[1] = " add r14, r11"; unrolledAdds[2] = " add r13, r11"; unrolledAdds[3] = " add r12, r11"; string postLoadInstr2 = " add r11, rsi"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs( sb, this.Counts, this.Prefix, unrolledAdds, unrolledAdds, false, postLoadInstrs1: postLoadInstr1, postLoadInstrs2: postLoadInstr2); }
public override void GenerateX86NasmAsm(StringBuilder sb) { string[] nops = new string[1]; nops[0] = "test r15, r14"; UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, nops, nops, true); }
public override void GenerateX86NasmAsm(StringBuilder sb) { UarchTestHelpers.GenerateX86NasmStructureTestFuncs(sb, this.Counts, this.Prefix, nops, nops, true); }