-Matt
_______________________________________________
LLVM Developers mailing list
llvm...@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
I think you really just want to be emitting a COPY and handling the wide registers in copyPhysReg for bitconvert
From: Peter Bel <upcf...@gmail.com>
Sent: Wednesday, March 22, 2017 10:18:45 AM
To: Arsenault, Matthew
Subject: Re: [llvm-dev] REG_SEQUENCE use questionThanks for mentioning bitconvert, I completely forgot about it, and I think there's a couple of places where I'll need it to be implemented.About the REG_SEQUENCE - in fact the only 2 things that i want to be able to do are to use 64-bit load/store instructions (which use RegisterTuples similar to AMDGPU), and to handle 64-bit values (i.e. setting and saving them).The CPU itself can't handle any 64-bit ops except load/store, but as far as i understood, having some kind of i64/f64 virtual reg class or tuple (probably tuple would be better here) is necessary to use 64-bit types like double.
That said, I'm just not sure how to proceed with this stuff - should it be regclass or regtuple, should i write additional patterns to handle all other ops, etc.
You can have a Pat that will convert an immediate into a value in a
register. For example (from HexagonPatterns.td):
def: Pat<(s32_0ImmPred:$s16), (A2_tfrsi imm:$s16)>;
For dividing regs we use PatFrags LoReg and HiReg.
-Krzysztof
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation