Commit 8fd17b98 by Jiong Wang Committed by Jiong Wang

[AArch64] Generalize TLSLE macro and pattern names

2015-06-29  Jiong Wang  <jiong.wang@arm.com>

	* config/arch64/aarch64.md (UNSPEC_TLSLE): New enumeration.
	* config/arch64/aarch64.md (tlsle_small): Rename to tlsle and use new
	unspec name.
	(tlsle_small_<mode>): Rename to tlsle_<mode> and use new unspec name.
	* config/arch64/aarch64-protos.h (arch64_symbol_type): Rename
	SYMBOL_SMALL_TPREL to SYMBOL_TLSLE.
	(aarch64_symbol_context): Ditto.
	* config/aarch64/aarch64.c (aarch64_load_symref_appropriately): Ditto
	and use new pattern name.
	(aarch64_expand_mov_immediate): Ditto.
	(aarch64_print_operand): Ditto.
	(aarch64_classify_tls_symbol): Ditto.

From-SVN: r225121
parent f461569a
2015-06-29 Jiong Wang <jiong.wang@arm.com>
* config/arch64/aarch64.md (UNSPEC_TLSLE): New enumeration.
* config/arch64/aarch64.md (tlsle_small): Rename to tlsle and use new
unspec name.
(tlsle_small_<mode>): Rename to tlsle_<mode> and use new unspec name.
* config/arch64/aarch64-protos.h (arch64_symbol_type): Rename
SYMBOL_SMALL_TPREL to SYMBOL_TLSLE.
(aarch64_symbol_context): Ditto.
* config/aarch64/aarch64.c (aarch64_load_symref_appropriately): Ditto
and use new pattern name.
(aarch64_expand_mov_immediate): Ditto.
(aarch64_print_operand): Ditto.
(aarch64_classify_tls_symbol): Ditto.
2015-06-29 Marek Polacek <polacek@redhat.com> 2015-06-29 Marek Polacek <polacek@redhat.com>
Marc Glisse <marc.glisse@inria.fr> Marc Glisse <marc.glisse@inria.fr>
......
...@@ -72,7 +72,7 @@ enum aarch64_symbol_context ...@@ -72,7 +72,7 @@ enum aarch64_symbol_context
SYMBOL_SMALL_TLSGD SYMBOL_SMALL_TLSGD
SYMBOL_SMALL_TLSDESC SYMBOL_SMALL_TLSDESC
SYMBOL_SMALL_GOTTPREL SYMBOL_SMALL_GOTTPREL
SYMBOL_SMALL_TPREL SYMBOL_TLSLE
Each of of these represents a thread-local symbol, and corresponds to the Each of of these represents a thread-local symbol, and corresponds to the
thread local storage relocation operator for the symbol being referred to. thread local storage relocation operator for the symbol being referred to.
...@@ -107,9 +107,9 @@ enum aarch64_symbol_type ...@@ -107,9 +107,9 @@ enum aarch64_symbol_type
SYMBOL_SMALL_TLSGD, SYMBOL_SMALL_TLSGD,
SYMBOL_SMALL_TLSDESC, SYMBOL_SMALL_TLSDESC,
SYMBOL_SMALL_GOTTPREL, SYMBOL_SMALL_GOTTPREL,
SYMBOL_SMALL_TPREL,
SYMBOL_TINY_ABSOLUTE, SYMBOL_TINY_ABSOLUTE,
SYMBOL_TINY_GOT, SYMBOL_TINY_GOT,
SYMBOL_TLSLE,
SYMBOL_FORCE_TO_MEM SYMBOL_FORCE_TO_MEM
}; };
......
...@@ -1059,14 +1059,14 @@ aarch64_load_symref_appropriately (rtx dest, rtx imm, ...@@ -1059,14 +1059,14 @@ aarch64_load_symref_appropriately (rtx dest, rtx imm,
return; return;
} }
case SYMBOL_SMALL_TPREL: case SYMBOL_TLSLE:
{ {
rtx tp = aarch64_load_tp (NULL); rtx tp = aarch64_load_tp (NULL);
if (GET_MODE (dest) != Pmode) if (GET_MODE (dest) != Pmode)
tp = gen_lowpart (GET_MODE (dest), tp); tp = gen_lowpart (GET_MODE (dest), tp);
emit_insn (gen_tlsle_small (dest, tp, imm)); emit_insn (gen_tlsle (dest, tp, imm));
set_unique_reg_note (get_last_insn (), REG_EQUIV, imm); set_unique_reg_note (get_last_insn (), REG_EQUIV, imm);
return; return;
} }
...@@ -1619,9 +1619,9 @@ aarch64_expand_mov_immediate (rtx dest, rtx imm) ...@@ -1619,9 +1619,9 @@ aarch64_expand_mov_immediate (rtx dest, rtx imm)
} }
/* FALLTHRU */ /* FALLTHRU */
case SYMBOL_SMALL_TPREL:
case SYMBOL_SMALL_ABSOLUTE: case SYMBOL_SMALL_ABSOLUTE:
case SYMBOL_TINY_ABSOLUTE: case SYMBOL_TINY_ABSOLUTE:
case SYMBOL_TLSLE:
aarch64_load_symref_appropriately (dest, imm, sty); aarch64_load_symref_appropriately (dest, imm, sty);
return; return;
...@@ -4504,7 +4504,7 @@ aarch64_print_operand (FILE *f, rtx x, char code) ...@@ -4504,7 +4504,7 @@ aarch64_print_operand (FILE *f, rtx x, char code)
asm_fprintf (asm_out_file, ":gottprel:"); asm_fprintf (asm_out_file, ":gottprel:");
break; break;
case SYMBOL_SMALL_TPREL: case SYMBOL_TLSLE:
asm_fprintf (asm_out_file, ":tprel:"); asm_fprintf (asm_out_file, ":tprel:");
break; break;
...@@ -4537,7 +4537,7 @@ aarch64_print_operand (FILE *f, rtx x, char code) ...@@ -4537,7 +4537,7 @@ aarch64_print_operand (FILE *f, rtx x, char code)
asm_fprintf (asm_out_file, ":gottprel_lo12:"); asm_fprintf (asm_out_file, ":gottprel_lo12:");
break; break;
case SYMBOL_SMALL_TPREL: case SYMBOL_TLSLE:
asm_fprintf (asm_out_file, ":tprel_lo12_nc:"); asm_fprintf (asm_out_file, ":tprel_lo12_nc:");
break; break;
...@@ -4555,7 +4555,7 @@ aarch64_print_operand (FILE *f, rtx x, char code) ...@@ -4555,7 +4555,7 @@ aarch64_print_operand (FILE *f, rtx x, char code)
switch (aarch64_classify_symbolic_expression (x, SYMBOL_CONTEXT_ADR)) switch (aarch64_classify_symbolic_expression (x, SYMBOL_CONTEXT_ADR))
{ {
case SYMBOL_SMALL_TPREL: case SYMBOL_TLSLE:
asm_fprintf (asm_out_file, ":tprel_hi12:"); asm_fprintf (asm_out_file, ":tprel_hi12:");
break; break;
default: default:
...@@ -7635,7 +7635,7 @@ aarch64_classify_tls_symbol (rtx x) ...@@ -7635,7 +7635,7 @@ aarch64_classify_tls_symbol (rtx x)
return SYMBOL_SMALL_GOTTPREL; return SYMBOL_SMALL_GOTTPREL;
case TLS_MODEL_LOCAL_EXEC: case TLS_MODEL_LOCAL_EXEC:
return SYMBOL_SMALL_TPREL; return SYMBOL_TLSLE;
case TLS_MODEL_EMULATED: case TLS_MODEL_EMULATED:
case TLS_MODEL_NONE: case TLS_MODEL_NONE:
......
...@@ -117,6 +117,7 @@ ...@@ -117,6 +117,7 @@
UNSPEC_ST4_LANE UNSPEC_ST4_LANE
UNSPEC_TLS UNSPEC_TLS
UNSPEC_TLSDESC UNSPEC_TLSDESC
UNSPEC_TLSLE
UNSPEC_USHL_2S UNSPEC_USHL_2S
UNSPEC_VSTRUCTDUMMY UNSPEC_VSTRUCTDUMMY
UNSPEC_SP_SET UNSPEC_SP_SET
...@@ -4446,27 +4447,25 @@ ...@@ -4446,27 +4447,25 @@
(set_attr "length" "8")] (set_attr "length" "8")]
) )
(define_expand "tlsle_small" (define_expand "tlsle"
[(set (match_operand 0 "register_operand" "=r") [(set (match_operand 0 "register_operand" "=r")
(unspec [(match_operand 1 "register_operand" "r") (unspec [(match_operand 1 "register_operand" "r")
(match_operand 2 "aarch64_tls_le_symref" "S")] (match_operand 2 "aarch64_tls_le_symref" "S")]
UNSPEC_GOTSMALLTLS))] UNSPEC_TLSLE))]
"" ""
{ {
machine_mode mode = GET_MODE (operands[0]); machine_mode mode = GET_MODE (operands[0]);
emit_insn ((mode == DImode emit_insn ((mode == DImode
? gen_tlsle_small_di ? gen_tlsle_di
: gen_tlsle_small_si) (operands[0], : gen_tlsle_si) (operands[0], operands[1], operands[2]));
operands[1],
operands[2]));
DONE; DONE;
}) })
(define_insn "tlsle_small_<mode>" (define_insn "tlsle_<mode>"
[(set (match_operand:P 0 "register_operand" "=r") [(set (match_operand:P 0 "register_operand" "=r")
(unspec:P [(match_operand:P 1 "register_operand" "r") (unspec:P [(match_operand:P 1 "register_operand" "r")
(match_operand 2 "aarch64_tls_le_symref" "S")] (match_operand 2 "aarch64_tls_le_symref" "S")]
UNSPEC_GOTSMALLTLS))] UNSPEC_TLSLE))]
"" ""
"add\\t%<w>0, %<w>1, #%G2, lsl #12\;add\\t%<w>0, %<w>0, #%L2" "add\\t%<w>0, %<w>1, #%G2, lsl #12\;add\\t%<w>0, %<w>0, #%L2"
[(set_attr "type" "alu_sreg") [(set_attr "type" "alu_sreg")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment