[llvm-dev] How to add Loongson ISA for Mips target?

Leslie Zhai via llvm-dev llvm-dev at lists.llvm.org
Thu Sep 6 03:01:26 PDT 2018


Hi LLVM developers,

GCC[1] is able to use Loongson ISA[2] for instruction selection:

$ cat hello.c
#include <stdio.h>

int main(int argc, char *argv[]) {
   printf("Hello World\n");
   return 0;
}

$ gcc -O0 -S hello.c

$ cat hello.s
     .file    1 "hello.c"
     .section .mdebug.abi64
     .previous
     .nan    legacy
     .gnu_attribute 4, 1
     .abicalls
     .rdata
     .align    3
.LC0:
     .ascii    "Hello World\000"
     .text
     .align    2
     .globl    main
     .set    nomips16
     .set    nomicromips
     .ent    main
     .type    main, @function
main:
     .frame    $fp,48,$31        # vars= 16, regs= 3/0, args= 0, gp= 0
     .mask    0xd0000000,-8
     .fmask    0x00000000,0
     .set    noreorder
     .set    nomacro
     daddiu    $sp,$sp,-48
     gssq    $31,$fp,32($sp)
     sd    $28,24($sp)
     move    $fp,$sp
     lui    $28,%hi(%neg(%gp_rel(main)))
     daddu    $28,$28,$25
     daddiu    $28,$28,%lo(%neg(%gp_rel(main)))
     move    $2,$4
     sd    $5,8($fp)
     sll    $2,$2,0
     sw    $2,0($fp)
     ld    $2,%got_page(.LC0)($28)
     daddiu    $4,$2,%got_ofst(.LC0)
     ld    $2,%call16(puts)($28)
     move    $25,$2
     .reloc    1f,R_MIPS_JALR,puts
1:    jalr    $25
     nop

     move    $2,$0
     move    $sp,$fp
     gslq    $31,$fp,32($sp)
     ld    $28,24($sp)
     daddiu    $sp,$sp,48
     j    $31
     nop

     .set    macro
     .set    reorder
     .end    main
     .size    main, .-main
     .ident    "GCC: (GNU) 4.9.3 20150626 (Red Hat 4.9.3-8)"

gssq and gslq are some instructions of Loongson ISA.  How to add 
Loongson ISA for Mips target?

I just:

* add loongson3a cpu in frontend 
https://github.com/xiangzhai/clang/commits?author=xiangzhai

* initial Loongson3A subtarget skeleton.

Are there some documents or papers?  Please teach me,  thanks a lot!

1. https://github.com/loongson-community/gcc
2. Chinese Simplified version 
http://www.loongson.cn/uploadfile/cpu/3A3000/Loongson3A3000_3B3000user2.pdf

-- 
Regards,
Leslie Zhai




More information about the llvm-dev mailing list