[llvm-dev] Lowering the metadata attached to an instruction down to Pattern Instruction Selection pass
Naveed Ul Mustafa via llvm-dev
llvm-dev at lists.llvm.org
Tue Dec 13 08:56:58 PST 2016
Hello devlopers,
I request your guidance on how to lower the metadata attached with an
instruction. Following is given the IR dump before Module verifier pass,
and there is a string "Tile3" attached as metadata with instruction "%x
= alloca i32, align 4, !Tile3 !1". My target is to transmit/propagate
the string down to post RA-Scheduling pass. Is it possible? If yes, how
I can do so. Can you please provide any hints or pointers to some
documentation.
Please note that metadata disappears after "Pattern Instruction
Selection Pass" as is shown in the IR dump before "Expand ISel
Pseudo-instructions Pass", which, I guess, is the next pass after
"Pattern Instruction Selection Pass".
*** IR Dump Before Module Verifier ***
; Function Attrs: nounwind
define i32 @main() #0 {
entry:
%retval = alloca i32, align 4
%x = alloca i32, align 4, !Tile3 !1
store i32 0, i32* %retval, align 4
store volatile i32 5, i32* %x, align 4
%0 = load volatile i32, i32* %x, align 4
%inc = add i32 %0, 1
store volatile i32 %inc, i32* %x, align 4
%1 = load volatile i32, i32* %x, align 4
ret i32 %1
}
# *** IR Dump Before Expand ISel Pseudo-instructions ***:
# Machine code for function main: Properties: <SSA, tracking liveness,
HasVRegs>
Frame Objects:
fi#0: size=4, align=4, at location [SP]
fi#1: size=4, align=4, at location [SP]
BB#0: derived from LLVM BB %entry
%vreg0<def> = LDImm32 0; IRF32:%vreg0
LSU_STO_i32_Myr2 %vreg0<kill>, <fi#0>, 0, pred:1, pred:%noreg, 7;
mem:ST4[%retval] IRF32:%vreg0
%vreg1<def> = LDImm32 5; IRF32:%vreg1
LSU_STO_i32_Myr2 %vreg1<kill>, <fi#1>, 0, pred:1, pred:%noreg, 7;
mem:Volatile ST4[%x] IRF32:%vreg1
%vreg2<def> = LSU_LDO_i32_Myr2 <fi#1>, 0, pred:1, pred:%noreg, 7;
mem:Volatile LD4[%x] IRF32:%vreg2
%vreg3<def> = IAU_ADD_32_imm %vreg2<kill>, 1, pred:1, pred:%noreg,
%CC_IAU0<imp-def,dead>, %I_STATE<imp-def,dead>; IRF32:%vreg3,%vreg2
LSU_STO_i32_Myr2 %vreg3<kill>, <fi#1>, 0, pred:1, pred:%noreg, 7;
mem:Volatile ST4[%x] IRF32:%vreg3
%vreg4<def> = LSU_LDO_i32_Myr2 <fi#1>, 0, pred:1, pred:%noreg, 7;
mem:Volatile LD4[%x] IRF32:%vreg4
%I18<def> = COPY %vreg4; IRF32:%vreg4
SHAVE_RETURN %I18
# End machine code for function main.
Thanks for any helpful response.
--
Naveed Ul Mustafa
More information about the llvm-dev
mailing list