Changeset 4243


Ignore:
Timestamp:
Oct 15, 2014, 2:49:54 PM (5 years ago)
Author:
linmengl
Message:

micro benchmark for long stream addition ready, use 'make avxasm' and 'make masterasm' to double check assembly code.

Location:
trunk/lib_ir/AgnerTestP/PMCTest
Files:
3 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib_ir/AgnerTestP/PMCTest/Makefile

    r4232 r4243  
    66        g++ -O2 -m64 PMCTestA.cpp B_llc_opt.o -lpthread -o PMCTest
    77
     8lsadd: lsadd.ll PMCTestA.cpp LSAdd.bc
     9        llvm-as-3.5 lsadd.ll -o llc_func.bc
     10        llvm-link LSAdd.bc llc_func.bc -o B_llc.bc
     11        opt-svn -O3 -std-compile-opts -mattr=+avx2,+bmi2 B_llc.bc -o B_llc_opt.bc
     12        llc-svn -O3 -mattr=+avx2,+bmi2 -filetype=obj B_llc_opt.bc -o B_llc_opt.o
     13        g++ -O2 -mavx2 -m64 PMCTestA.cpp B_llc_opt.o -lpthread -o PMCTest
     14
     15lsadd_master: lsadd.ll PMCTestA.cpp LSAdd.bc
     16        llvm-as-3.5 lsadd.ll -o llc_func.bc
     17        llvm-link LSAdd.bc llc_func.bc -o B_llc.bc
     18        opt-3.5 -O3 -std-compile-opts -mattr=+avx2,+bmi2 B_llc.bc -o B_llc_opt.bc
     19        llc-3.5 -O3 -mattr=+avx2,+bmi2 -filetype=obj B_llc_opt.bc -o B_llc_opt.o
     20        g++ -O2 -mavx2 -m64 PMCTestA.cpp B_llc_opt.o -lpthread -o PMCTest
     21
    822asm: B_llc_opt.bc
    923        llc-svn -O3 -mattr=+sse2 B_llc_opt.bc
     24        vim B_llc_opt.s
     25
     26avxasm: B_llc_opt.bc
     27        llc-svn -O3 -mattr=+avx2,+bmi2 B_llc_opt.bc
     28        vim B_llc_opt.s
     29
     30masterasm: B_llc_opt.bc
     31        llc-3.5 -O3 -mattr=+avx2,+bmi2 B_llc_opt.bc
    1032        vim B_llc_opt.s
    1133
     
    2042        clang PMCTestB.cpp -c -emit-llvm -msse2 -m64 -o B.bc -I ../../ -lpthread
    2143
     44LSAdd.bc: PMCTestLSAdd.cpp
     45        clang PMCTestLSAdd.cpp -c -emit-llvm -mavx2 -m64 -o LSAdd.bc -I ../../ -lpthread
     46
    2247clean:
    23         rm -f *.bc *.o a.out PMCTest PMCTestB.cpp
     48        rm -f *.bc *.o a.out PMCTest PMCTestB.cpp PMCTestLSAdd.cpp
    2449
  • trunk/lib_ir/AgnerTestP/PMCTest/llc_func.ll

    r4224 r4243  
    258258; long stream add/shift
    259259declare {i128, i1} @llvm.uadd.with.overflow.i128(i128 %a, i128 %b)
    260 
    261 define void @uadd_with_overflow_i128(<2 x i64> %a, <2 x i64> %b, <2 x i64>* %P, i8* %B) {
     260declare {i256, i1} @llvm.uadd.with.overflow.i256(i256 %a, i256 %b)
     261
     262define <2 x i64> @uadd_with_overflow_i128(<2 x i64> %a, <2 x i64> %b) {
    262263entry:
    263264  %aa = bitcast <2 x i64> %a to i128
     
    266267  %res = call {i128, i1} @llvm.uadd.with.overflow.i128(i128 %aa, i128 %bb)
    267268  %sum = extractvalue {i128, i1} %res, 0
    268   %obit = extractvalue {i128, i1} %res, 1
    269   %obit8 = zext i1 %obit to i8
    270 
    271   %r = bitcast i128 %sum to <2 x i64>
    272 
    273   store <2 x i64> %r, <2 x i64>* %P
    274   store i8 %obit8, i8* %B
    275 
    276   ret void
     269
     270  %sum1 = bitcast i128 %sum to <2 x i64>
     271  ret <2 x i64> %sum1
     272}
     273
     274define <4 x i64> @uadd_with_overflow_i256(<4 x i64> %a, <4 x i64> %b) {
     275entry:
     276  %aa = bitcast <4 x i64> %a to i256
     277  %bb = bitcast <4 x i64> %b to i256
     278
     279  %res = call {i256, i1} @llvm.uadd.with.overflow.i256(i256 %aa, i256 %bb)
     280  %sum = extractvalue {i256, i1} %res, 0
     281
     282  %sum1 = bitcast i256 %sum to <4 x i64>
     283  ret <4 x i64> %sum1
    277284}
    278285
Note: See TracChangeset for help on using the changeset viewer.