Home | History | Annotate | Download | only in MCTargetDesc
      1 //=- AArch64/AArch64FixupKinds.h - AArch64 Specific Fixup Entries -*- C++ -*-=//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 //
     10 // This file describes the LLVM fixups applied to MCInsts in the AArch64
     11 // backend.
     12 //
     13 //===----------------------------------------------------------------------===//
     14 
     15 #ifndef LLVM_AARCH64_AARCH64FIXUPKINDS_H
     16 #define LLVM_AARCH64_AARCH64FIXUPKINDS_H
     17 
     18 #include "llvm/MC/MCFixup.h"
     19 
     20 namespace llvm {
     21   namespace AArch64 {
     22     enum Fixups {
     23       fixup_a64_ld_prel = FirstTargetFixupKind,
     24       fixup_a64_adr_prel,
     25       fixup_a64_adr_prel_page,
     26 
     27       fixup_a64_add_lo12,
     28 
     29       fixup_a64_ldst8_lo12,
     30       fixup_a64_ldst16_lo12,
     31       fixup_a64_ldst32_lo12,
     32       fixup_a64_ldst64_lo12,
     33       fixup_a64_ldst128_lo12,
     34 
     35       fixup_a64_tstbr,
     36       fixup_a64_condbr,
     37       fixup_a64_uncondbr,
     38       fixup_a64_call,
     39 
     40       fixup_a64_movw_uabs_g0,
     41       fixup_a64_movw_uabs_g0_nc,
     42       fixup_a64_movw_uabs_g1,
     43       fixup_a64_movw_uabs_g1_nc,
     44       fixup_a64_movw_uabs_g2,
     45       fixup_a64_movw_uabs_g2_nc,
     46       fixup_a64_movw_uabs_g3,
     47 
     48       fixup_a64_movw_sabs_g0,
     49       fixup_a64_movw_sabs_g1,
     50       fixup_a64_movw_sabs_g2,
     51 
     52       fixup_a64_adr_prel_got_page,
     53       fixup_a64_ld64_got_lo12_nc,
     54 
     55       // Produce offsets relative to the module's dynamic TLS area.
     56       fixup_a64_movw_dtprel_g2,
     57       fixup_a64_movw_dtprel_g1,
     58       fixup_a64_movw_dtprel_g1_nc,
     59       fixup_a64_movw_dtprel_g0,
     60       fixup_a64_movw_dtprel_g0_nc,
     61       fixup_a64_add_dtprel_hi12,
     62       fixup_a64_add_dtprel_lo12,
     63       fixup_a64_add_dtprel_lo12_nc,
     64       fixup_a64_ldst8_dtprel_lo12,
     65       fixup_a64_ldst8_dtprel_lo12_nc,
     66       fixup_a64_ldst16_dtprel_lo12,
     67       fixup_a64_ldst16_dtprel_lo12_nc,
     68       fixup_a64_ldst32_dtprel_lo12,
     69       fixup_a64_ldst32_dtprel_lo12_nc,
     70       fixup_a64_ldst64_dtprel_lo12,
     71       fixup_a64_ldst64_dtprel_lo12_nc,
     72 
     73       // Produce the GOT entry containing a variable's address in TLS's
     74       // initial-exec mode.
     75       fixup_a64_movw_gottprel_g1,
     76       fixup_a64_movw_gottprel_g0_nc,
     77       fixup_a64_adr_gottprel_page,
     78       fixup_a64_ld64_gottprel_lo12_nc,
     79       fixup_a64_ld_gottprel_prel19,
     80 
     81       // Produce offsets relative to the thread pointer: TPIDR_EL0.
     82       fixup_a64_movw_tprel_g2,
     83       fixup_a64_movw_tprel_g1,
     84       fixup_a64_movw_tprel_g1_nc,
     85       fixup_a64_movw_tprel_g0,
     86       fixup_a64_movw_tprel_g0_nc,
     87       fixup_a64_add_tprel_hi12,
     88       fixup_a64_add_tprel_lo12,
     89       fixup_a64_add_tprel_lo12_nc,
     90       fixup_a64_ldst8_tprel_lo12,
     91       fixup_a64_ldst8_tprel_lo12_nc,
     92       fixup_a64_ldst16_tprel_lo12,
     93       fixup_a64_ldst16_tprel_lo12_nc,
     94       fixup_a64_ldst32_tprel_lo12,
     95       fixup_a64_ldst32_tprel_lo12_nc,
     96       fixup_a64_ldst64_tprel_lo12,
     97       fixup_a64_ldst64_tprel_lo12_nc,
     98 
     99       // Produce the special fixups used by the general-dynamic TLS model.
    100       fixup_a64_tlsdesc_adr_page,
    101       fixup_a64_tlsdesc_ld64_lo12_nc,
    102       fixup_a64_tlsdesc_add_lo12_nc,
    103       fixup_a64_tlsdesc_call,
    104 
    105 
    106       // Marker
    107       LastTargetFixupKind,
    108       NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind
    109     };
    110   }
    111 }
    112 
    113 #endif
    114