Added missing files
This commit is contained in:
parent
7e09862950
commit
de2c87e56e
6 changed files with 200 additions and 0 deletions
111
src/core/blist.hpp
Normal file
111
src/core/blist.hpp
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2017 Vitor Fernandes <email>
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BLIST_H
|
||||||
|
#define BLIST_H
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
class blist
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
typedef struct node{
|
||||||
|
node(T v,node* p,node* n){
|
||||||
|
value = v;
|
||||||
|
next = n;
|
||||||
|
previous = p;
|
||||||
|
}
|
||||||
|
node(T v){
|
||||||
|
value=v;
|
||||||
|
next=NULL;
|
||||||
|
previous=NULL;
|
||||||
|
}
|
||||||
|
T value;
|
||||||
|
node* next;
|
||||||
|
node* previous;
|
||||||
|
} Node;
|
||||||
|
|
||||||
|
blist(){
|
||||||
|
this->rootNode = NULL;
|
||||||
|
this->currentNode=this->rootNode;
|
||||||
|
size = 0;
|
||||||
|
};
|
||||||
|
blist(T value){
|
||||||
|
this->rootNode=new Node(value,NULL,NULL);
|
||||||
|
this->currentNode=this->rootNode;
|
||||||
|
size = 1;
|
||||||
|
};
|
||||||
|
blist(const blist<T>& other){
|
||||||
|
this->rootNode = other.root();
|
||||||
|
};
|
||||||
|
void add(T value){
|
||||||
|
if(this->rootNode==NULL){
|
||||||
|
this->rootNode=new Node(value,NULL,NULL);
|
||||||
|
this->currentNode=rootNode;
|
||||||
|
}else{
|
||||||
|
Node* newNode = new Node(value,currentNode,NULL);
|
||||||
|
this->currentNode->next = newNode;
|
||||||
|
currentNode=newNode;
|
||||||
|
}
|
||||||
|
size++;
|
||||||
|
};
|
||||||
|
~blist(){
|
||||||
|
std::cout << "Destructing list" << std::endl;
|
||||||
|
Node *aux;
|
||||||
|
while(this->currentNode!=this->rootNode){
|
||||||
|
aux = this->currentNode;
|
||||||
|
this->currentNode = this->currentNode->previous;
|
||||||
|
delete aux;
|
||||||
|
}
|
||||||
|
delete this->rootNode;
|
||||||
|
};
|
||||||
|
blist<T>& operator=(const blist& other){
|
||||||
|
this->rootNode = other.root();
|
||||||
|
};
|
||||||
|
bool operator==(const blist& other){
|
||||||
|
this->rootNode==other.root();
|
||||||
|
};
|
||||||
|
Node * root() const {
|
||||||
|
return this->rootNode;
|
||||||
|
};
|
||||||
|
Node * current() const {
|
||||||
|
return this->currentNode;
|
||||||
|
};
|
||||||
|
|
||||||
|
T* values() {
|
||||||
|
T *aux = new T[size];
|
||||||
|
Node *naux = this->rootNode;
|
||||||
|
for(int i=0;i<size;i++){
|
||||||
|
aux[i]=naux->value;
|
||||||
|
naux=naux->next;
|
||||||
|
}
|
||||||
|
return aux;
|
||||||
|
};
|
||||||
|
int getSize(){
|
||||||
|
return size;
|
||||||
|
};
|
||||||
|
private:
|
||||||
|
Node * rootNode;
|
||||||
|
Node * currentNode;
|
||||||
|
int size;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // BLIST_H
|
0
src/core/cpu/CMakeLists.txt
Normal file
0
src/core/cpu/CMakeLists.txt
Normal file
17
src/core/cpu/avx2.cpp
Normal file
17
src/core/cpu/avx2.cpp
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#include "avx2.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
|
void core::cpu::avx2::avx_sum(int *a,int *b){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void core::cpu::avx2::printAVX2Num(int *num){
|
||||||
|
for(int i=0;i<avx2::AVX2_INT_SIZE;i++){
|
||||||
|
cout << i;
|
||||||
|
if(i<avx2::AVX2_INT_SIZE-1){
|
||||||
|
cout << ",";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
18
src/core/cpu/avx2.hpp
Normal file
18
src/core/cpu/avx2.hpp
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
#ifndef AVX2_H
|
||||||
|
#define AVX2_H
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
/**
|
||||||
|
* This will define a set of functions
|
||||||
|
*/
|
||||||
|
namespace core {
|
||||||
|
namespace cpu {
|
||||||
|
class avx2 {
|
||||||
|
public:
|
||||||
|
static int const AVX2_INT_SIZE=16;
|
||||||
|
static void avx_sum(int* a, int* b);
|
||||||
|
static void printAVX2Num(int* num);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
#endif
|
27
src/core/cpu/naive.cpp
Normal file
27
src/core/cpu/naive.cpp
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
#include "naive.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
void core::cpu::Naive::sum_128_long(int *a,int *b){
|
||||||
|
long a1 = ((long)a[0] << 32) | a[1];
|
||||||
|
long a2 = ((long)a[2] << 32) | a[3];
|
||||||
|
long b1 = ((long)b[0] << 32) | b[1];
|
||||||
|
long b2 = ((long)b[2] << 32) | b[3];
|
||||||
|
|
||||||
|
a1=a1+b1;
|
||||||
|
a2=a2+b2;
|
||||||
|
|
||||||
|
a[0]=a1>>32;
|
||||||
|
a[1]=a1;
|
||||||
|
a[2]=a2>>32;
|
||||||
|
a[3]=a2;
|
||||||
|
};
|
||||||
|
|
||||||
|
void core::cpu::Naive::print(int *num, int len){
|
||||||
|
for(int i=0;i<len;i++){
|
||||||
|
cout << num[i] ;
|
||||||
|
if(i<len-1){
|
||||||
|
cout << ",";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << endl;
|
||||||
|
};
|
27
src/core/cpu/naive.hpp
Normal file
27
src/core/cpu/naive.hpp
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
#ifndef CORE_CPU_NAIVE_H
|
||||||
|
#define CORE_CPU_NAIVE_H
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
/**
|
||||||
|
* This will define a set of functions
|
||||||
|
*/
|
||||||
|
namespace core {
|
||||||
|
namespace cpu {
|
||||||
|
class Naive {
|
||||||
|
private:
|
||||||
|
static const unsigned int MASK_32=0xFFFFFFFF;
|
||||||
|
public:
|
||||||
|
//Attributes
|
||||||
|
static const unsigned char LEN_64 = 2;
|
||||||
|
static const unsigned char LEN_128 = 4;
|
||||||
|
static const unsigned char LEN_256 = 8;
|
||||||
|
static const unsigned char LEN_512 = 8;
|
||||||
|
|
||||||
|
//Methods
|
||||||
|
static void sum_128_long(int* a, int* b);
|
||||||
|
static void print(int* num,int len);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in a new issue