Skip to content

Commit

Permalink
Merge branch 'master' into v5.0
Browse files Browse the repository at this point in the history
  • Loading branch information
TomTheBear committed Nov 14, 2019
2 parents d09f276 + cd0d97a commit a4892d9
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 38 deletions.
132 changes: 97 additions & 35 deletions bench/perl/gas.pm
Expand Up @@ -32,6 +32,8 @@ use Data::Dumper;
use isax86;
use isax86_64;
use isappc64;
use isaarmv7;
use isaarmv8;

sub init
{
Expand Down Expand Up @@ -100,10 +102,16 @@ sub function_entry
$CURRENT_SECTION = 'text';
print ".text\n";
}

if ($main::ISA eq 'x86') {
if ($main::ISA eq 'ARMv7' or $main::ISA eq 'ARMv8') {
print ".globl $symbolname\n";
print ".type $symbolname, %function\n";
print "$symbolname :\n";
} elsif ($main::ISA eq 'x86' or $main::ISA eq 'x86-64') {
print ".globl $symbolname\n";
print ".type $symbolname, \@function\n";
}

if ($main::ISA eq 'x86') {
print "$symbolname :\n";
print "push ebp\n";
print "mov ebp, esp\n";
Expand All @@ -113,8 +121,6 @@ sub function_entry
print "push esi\n";
print "push edi\n";
} elsif ($main::ISA eq 'x86-64') {
print ".globl $symbolname\n";
print ".type $symbolname, \@function\n";
print "$symbolname :\n";
print "push rbp\n";
print "mov rbp, rsp\n";
Expand Down Expand Up @@ -145,8 +151,12 @@ sub function_entry
print "$symbolname :\n";
print ".L.$symbolname:\n";
print ".localentry $symbolname, .-$symbolname\n";

}
} elsif ($main::ISA eq 'ARMv7') {
print "push {r4-r7, lr}\n";
print "add r7, sp, #12\n";
print "push {r8, r10, r11}\n";
print "vstmdb sp!, {d8-d15}\n";
}
}

sub function_exit
Expand All @@ -173,11 +183,14 @@ sub function_exit
print "pop rbp\n";
print "ret\n";
print ".size $symbolname, .-$symbolname\n";
} elsif ($main::ISA eq 'ppc64') {
print "blr\n";
print ".size $symbolname, .-$symbolname\n";
} elsif ($main::ISA eq 'ARMv7') {
print "vldmia sp!, {d8-d15}\n";
print "pop {r8, r10, r11}\n";
print "pop {r4-r7, pc}\n";
} elsif ($main::ISA eq 'ARMv8') {
print ".exit:\n";
print "ret\n";
}
#print ".size $symbolname, .-$symbolname\n";
print "\n";
}

Expand All @@ -191,14 +204,16 @@ sub define_data
$CURRENT_SECTION = 'data';
print ".data\n";
}
print ".align $ALIGN\n";
print "$symbolname:\n";
if ($type eq 'DOUBLE') {
print ".double $value, $value, $value, $value, $value, $value, $value, $value\n"
} elsif ($type eq 'SINGLE') {
print ".single $value, $value, $value, $value, $value, $value, $value, $value\n"
} elsif ($type eq 'INT') {
print ".int $value, $value\n"
if ($main::ISA ne 'ARMv7' and $main::ISA ne 'ARMv8') {
print ".align $ALIGN\n";
print "$symbolname:\n";
if ($type eq 'DOUBLE') {
print ".double $value, $value, $value, $value, $value, $value, $value, $value\n"
} elsif ($type eq 'SINGLE') {
print ".single $value, $value, $value, $value, $value, $value, $value, $value\n"
} elsif ($type eq 'INT') {
print ".int $value, $value\n"
}
}
}

Expand All @@ -212,7 +227,11 @@ sub define_offset
$CURRENT_SECTION = 'data';
print ".data\n";
}
print ".align $ALIGN\n";
if ($main::ISA eq 'ARMv7' or $main::ISA eq 'ARMv8') {
print ".align 2\n";
} else {
print ".align $ALIGN\n";
}
print "$symbolname:\n";
print ".int $value\n";
}
Expand Down Expand Up @@ -241,14 +260,34 @@ sub loop_entry
print "1:\n";
}
} elsif ($main::ISA eq 'ppc64') {
print "li r0, r10\n";
print "li r0, r10\n";
print "li r10, $step\n";
print "divd r10, r3, r10\n";
print "mtctr r10\n";
print "li r10, r0\n";
print "divd r10, r3, r10\n";
print "mtctr r10\n";
print "li r10, r0\n";
print "$symbolname:\n";
} elsif ($main::ISA eq 'ARMv7') {
print "mov r4, #0\n";
} elsif ($main::ISA eq 'ARMv8') {
print "mov x6, 0\n";
print ".loop:\n";
#print "\tcmp w0, w6\n";
#print "\tblt .exit\n";
}
if ($main::ISA ne 'ppc64') {
if ($main::ISA eq 'ARMv7') {
print ".align 2\n";
} elsif ($main::ISA eq 'ARMv8') {
print "\n";
} else {
print ".align 16\n";
}
if ($MODE eq 'GLOBAL') {
print "$symbolname :\n";
} elsif ($main::ISA ne 'ARMv8') {
print "1:\n";
}
}

}


Expand All @@ -260,23 +299,30 @@ sub loop_exit
if ($main::ISA eq 'x86') {
print "add eax, $step\n";
print "cmp eax, edi\n";
if ($MODE eq 'GLOBAL') {
print "jl $symbolname\n";
} else {
print "jl 1b\n";
}
print "\n";
} elsif ($main::ISA eq 'x86-64') {
print "add rax, $step\n";
print "cmp rax, rdi\n";
if ($MODE eq 'GLOBAL') {
print "jl $symbolname\n";
} elsif ($main::ISA eq 'ppc64') {
print "bdnz $symbolname\n";
} elsif ($main::ISA eq 'ARMv7') {
print "add r4, #$step\n";
print "cmp r4, r0\n";
} elsif ($main::ISA eq 'ARMv8') {
print "add x6, x6, #$step\n";
print "cmp x6, x0\n";
print "blt .loop\n";
}
if ($MODE eq 'GLOBAL') {
print "jl $symbolname\n";
}else {
if ($main::ISA eq 'ARMv7') {
print "blt 1b\n";
} elsif ($main::ISA eq 'ARMv8') {
#print "bgt 1b\n";
print "\n";
} else {
print "jl 1b\n";
}
print "\n";
} elsif ($main::ISA eq 'ppc64') {
print "bdnz $symbolname\n";
}
}

Expand Down Expand Up @@ -309,6 +355,22 @@ sub isa_init
$AS = { HEADER => '',
FOOTER => ''};
$ALIGN = '16';
} elsif ($main::ISA eq 'ARMv7') {
$BASEPTR = $isaarmv7::BASEPTR_ARMv7;
$WORDLENGTH = $isaarmv7::WORDLENGTH_ARMv7;
$STACKPTR = $isaarmv7::STACKPTR_ARMv7 ;
$REG = $isaarmv7::REG_ARMv7;
$ARG = $isaarmv7::ARG_ARMv7 ;
$AS = { HEADER => ".cpu cortex-a15\n.fpu neon-vfpv4",
FOOTER => '' };
} elsif ($main::ISA eq 'ARMv8') {
$BASEPTR = $isaarmv8::BASEPTR_ARMv8;
$WORDLENGTH = $isaarmv8::WORDLENGTH_ARMv8;
$STACKPTR = $isaarmv8::STACKPTR_ARMv8 ;
$REG = $isaarmv8::REG_ARMv8;
$ARG = $isaarmv8::ARG_ARMv8 ;
$AS = { HEADER => ".cpu generic+fp+simd",
FOOTER => '' };
}
}

Expand Down
4 changes: 4 additions & 0 deletions src/perfgroup.c
Expand Up @@ -618,6 +618,10 @@ int perfgroup_customGroup(const char* eventStr, GroupInfo* ginfo)
bstring fix0 = bformat("PMC4");
bstring fix1 = bformat("PMC5");
#endif
#if defined(__ARM_ARCH_8A) || defined(__ARM_ARCH_7A__)
bstring fix0 = bformat("012345");
bstring fix1 = bformat("012345");
#endif
#ifdef LIKWID_WITH_NVMON
bstring gpu = bformat("GPU");
#endif
Expand Down
16 changes: 13 additions & 3 deletions src/topology_proc.c
Expand Up @@ -196,15 +196,26 @@ proc_init_cpuInfo(cpu_set_t cpuSet)
const_bstring modelString = bformat("model\t\t:");
const_bstring steppingString = bformat("stepping\t:");
const_bstring nameString = bformat("model name\t:");
const_bstring vendorString = bformat("vendor_id\t:");
const_bstring familyString = bformat("cpu family\t:");
#endif
#ifdef _ARCH_PPC
const_bstring modelString = bformat("cpu\t\t:");
const_bstring steppingString = bformat("revision\t:");
const_bstring nameString = bformat("machine\t\t:");
#endif
const_bstring vendorString = bformat("vendor_id\t:");
const_bstring familyString = bformat("cpu family\t:");
#endif
#if defined(__ARM_ARCH_8A) || defined(__ARM_ARCH_7A__)
const_bstring modelString = bformat("CPU variant\t:");
const_bstring steppingString = bformat("CPU revision\t:");
const_bstring nameString = bformat("machine\t\t:");
const_bstring vendorString = bformat("CPU implementer\t:");
const_bstring familyString = bformat("CPU architecture");
#endif

const_bstring countString = bformat("processor\t:");
const_bstring vendorString = bformat("vendor_id\t:");

const_bstring vendorIntelString = bformat("GenuineIntel");

cpuid_info.isIntel = 0;
Expand All @@ -226,7 +237,6 @@ proc_init_cpuInfo(cpu_set_t cpuSet)
fclose(fp);
for (i=0;i<tokens->qty;i++)
{
printf("%d\n", binstr(tokens->entry[i],0,modelString));
if (binstr(tokens->entry[i],0,countString) != BSTR_ERR)
{
HWthreads++;
Expand Down

0 comments on commit a4892d9

Please sign in to comment.