mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 04:33:05 +00:00
AArch64: add 'a' inline asm operand modifier
This is used in the Linux kernel, and effectively just means "print an address". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193593 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6b713800ff
commit
fd4937fe2a
@ -230,6 +230,8 @@ bool AArch64AsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNum,
|
||||
// Output bits 23:12 of symbolic address with appropriate :hi12: relocation
|
||||
// modifier (currently only for TLS local exec).
|
||||
return printSymbolicAddress(MI->getOperand(OpNum), true, "hi12", O);
|
||||
case 'a':
|
||||
return PrintAsmMemoryOperand(MI, OpNum, AsmVariant, ExtraCode, O);
|
||||
}
|
||||
|
||||
|
||||
|
@ -107,3 +107,12 @@ define void @test_inline_modifier_c() nounwind {
|
||||
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @test_inline_modifier_a() nounwind {
|
||||
; CHECK-LABEL: test_inline_modifier_a:
|
||||
call void asm sideeffect "prfm pldl1keep, ${0:a}", "r"(i32* @var_simple)
|
||||
; CHECK: adrp [[VARHI:x[0-9]+]], var_simple
|
||||
; CHECK: add x[[VARADDR:[0-9]+]], [[VARHI]], #:lo12:var_simple
|
||||
; CHECK: prfm pldl1keep, [x[[VARADDR]]]
|
||||
ret void
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user