Displaying 20 results from an estimated 10000 matches similar to: "Question about store with unaligned memory address"
2016 Jan 29
5
Question about store with unaligned memory address
Hi Krzysztof,
Thanks for response.
The method is working almost of test cases which use load and store
instructions connected with chain. There is other situation. Let's
look at a example as follows:
typedef unsigned short int UV __attribute__((vector_size (8)));
void test (UV *x, UV *y) {
*x = *y / ((UV) { 4, 4, 4, 4 });
}
The target does not support vector type so CodeGen tries to
2016 Feb 01
2
Question about store with unaligned memory address
Hi Bruce,
Thanks for response.
I also think it is not good way. Do you have the other ways to legalize it?
Thanks,
JinGu Kang
2016-02-01 13:11 GMT+00:00 Bruce Hoult <bruce at hoult.org>:
> In fact this is a pretty bad legalizing/lowering because you only need to
> load and edit for the first and last values in the vector. The other words
> are completely replaced and don't
2016 Jan 30
0
Question about store with unaligned memory address
I'm not clear, but it sounds like maybe your issue is not just alignment,
but that you have no 1/2-byte load or store operations at all on your
target?
Do you mean that to do any 2-byte store, even if it's naturally aligned,
you need to load the 4-byte word that contains it, replace the low or high
half as appropriate, and then use a 4-byte store to store back the modified
value?
On Fri,
2012 Dec 11
4
[LLVMdev] Loads/Stores and MachineMemOperand
I want to get some clarification on the exact semantics of the
MachineMemOperand attached to memory-touching instructions. From what I
understand, a MemSDNode has an associated MachineMemOperand and a
MachineInstr can have zero or more attached MachineMemOperands.
But what is the guarantee/constraint placed on optimization/codegen passes
for maintaining the contents of a MachineMemOperand? In
2017 Sep 17
2
Question about 'DAGTypeLegalizer::SplitVecOp_EXTRACT_VECTOR_ELT'
Please open a bugzilla ticket and attach your testcase. It will allow us to debug and fix the problem.
Thanks
- Elena
From: JinGu [mailto:jingu at codeplay.com]
Sent: Saturday, September 16, 2017 00:38
To: Demikhovsky, Elena <elena.demikhovsky at intel.com>; daniel_l_sanders at apple.com <daniel_l_sanders at apple.com>; Jon Chesterfield <jonathanchesterfield at
2017 Sep 15
2
Question about 'DAGTypeLegalizer::SplitVecOp_EXTRACT_VECTOR_ELT'
> extends the elements to 8bit and stores them on stack.
Store is responsible for zero-extend. This is the policy...
- Elena
-----Original Message-----
From: jingu at codeplay.com [mailto:jingu at codeplay.com]
Sent: Friday, September 15, 2017 17:45
To: llvm-dev at lists.llvm.org; Demikhovsky, Elena <elena.demikhovsky at intel.com>; daniel_l_sanders at apple.com
Subject: Re: Question
2017 Sep 18
1
Question about 'DAGTypeLegalizer::SplitVecOp_EXTRACT_VECTOR_ELT'
> so I think we need to use non-extending load for element size less than 8bit on "DAGTypeLegalizer::SplitVecOp_EXTRACT_VECTOR_ELT" like this roughly.
> if (N->getOperand(0).getValueType().getVectorElementType().getSizeInBits() < 8) {
> return DAG.getLoad(N->getValueType(0), dl, Store, StackPtr, MachinePointerInfo());
> } else {
> return
2017 Sep 14
2
Question about 'DAGTypeLegalizer::SplitVecOp_EXTRACT_VECTOR_ELT'
Hi All,
I have a question about splitting 'EXTRACT_VECTOR_ELT' with 'v2i1'. I
have a llvm IR code snippet as following:
llvm IR code snippet:
for.body: ; preds = %entry,
%for.cond
%i.022 = phi i32 [ 0, %entry ], [ %inc, %for.cond ]
%0 = icmp ne <2 x i32> %vecinit1, <i32 0, i32 -23>
%1 = extractelement <2 x i1>
2019 Feb 02
3
GlobalISEL, and MachineMemOperands?
Looking through the X86 GlobalISEL code for selecting loads and stores,
I'm not seeing the creation of the MachineMemOperands I'd expect to see
and do see being generated by SelectionDAG. Is this simply an
oversight, or is there some aspect of the new design which pushes us
away from MMOs?
Various parts of the machine instruction level optimization passes use
the existence and
2014 Dec 18
2
[LLVMdev] Please change the comment of 'insert' member function of SmallPtrSetImpl
Hi all,
I have a compilation failure with 'insert' member function of
SmallPtrSetImpl class because the return value is changed from r222334.
But the comment of the function is same with before as follows:
/// insert - This returns true if the pointer was new to the set,
false if it
/// was already in the set.
std::pair<iterator, bool> insert(PtrType Ptr) {
auto p
2014 Feb 19
2
[LLVMdev] Question about per-operand machine model
Hi JinGu,
We currently have the ResourceCycles list to indicate the number of cpu cycles during which a resource is reserved. We could simply add a ResourceDelay with similar grammar. The MachineScheduler could be taught to keep track of the first and last time that a resource is reserved.
Note that the MachineScheduler will work with the instruction itineraries if you choose to implement them.
2014 Jun 17
2
[LLVMdev] Question about 'DuplicateInstruction' function of TailDuplicatePass in CodeGen
Hi all,
I have faced a little bit of a strange transformation from the
TailDuplicatePass In CodeGen. When the pass clones the contents of
TailBB into PredBB, the bundled instructions in TailBB are not bundled
in PredBB. I think the reason why it is not bundled is that the
'DuplicateInstruction' function does not set up the flag of the first
instruction of the bundle in PredBB when it
2015 Dec 05
2
Question about Decoding Conflict of DisassemblerTables from TableGen
Hi All,
I have faced decoding conflict of DisassemblerTables from TableGen. I
have instructions with same encoding and different mnemonic among
different architecture versions. I have used Predicates and
AssemblerPredicates to distinguish them on Codegen and Assembler but
it does not work on Disassembler. When I look at
TableGen/FixedLenDecoderEmitter.cpp, once there is decoding conflict,
2016 Mar 31
2
Question about 'isUnsignedDIType' function on DwarfUnit.cpp
Hi All,
I have question about 'isUnsignedDIType' function on
'llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp'
When we want to generate object file with dwarf debug format, clang
can generates 'DW_ATE_lo_user' encoding for complex integer type as
follow:
"clang/lib/CodeGen/CGDebugInfo.cpp"
llvm::DIType *CGDebugInfo::CreateType(const ComplexType *Ty) {
...
if
2019 Sep 27
3
What about multiple MachineMemOperands in one MI (BranchFolding/MachineInstr::mayAlias)?
On 9/27/19 7:33 AM, Matt Arsenault via llvm-dev wrote:
>
>
>> On Sep 27, 2019, at 09:07, Björn Pettersson A via llvm-dev
>> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>>
>> Obviously we do not store into two locations (it is still a single
>> two byte store).
>> So is it (always) correct to interpret the list of
2013 May 28
2
[LLVMdev] Error on VSELECT Dagcombiner with some architecture
Hi all,
I met the error while compiling the code with vector type with some
architecture. IR is as following.
%cmp = icmp sgt <3 x i8> %x, zeroinitializer
%sub = sub <3 x i8> zeroinitializer, %x
%cond = select <3 x i1> %cmp, <3 x i8> %x, <3 x i8> %sub
'select' IR is converted to 'vselect' dag and is combined to 'sra (X,
size(X)-1); xor
2019 Jul 18
2
Question about TableGen RegisterClass definition
Hi All,
I have a question about TableGen RegisterClass definition.
I need to map different size of MVTs into a register class as below.
def TestReg : RegisterClass<"Test", [v8i32, v4i32], ...>
When I look at TableGen and CodeGen, it looks the types are used as following:
1. MCRegisterClass's RegSize and Alignment
2. SpillSize in TableGen
3. Type constraint for instruction
2014 Feb 18
2
[LLVMdev] Question about per-operand machine model
>Resources and latency are not tied. An instruction is mapped to a scheduling class. A scheduling class is mapped to a set of resources and a per-operand list of latencies.
Thanks for your kind explanation.
Our heuristic algorithm have needed the latency and the resource per operand to check resource conflicts per cycle. In order to support this with LLVM, I expected a per-operand list of
2016 Jan 11
2
Question about relaxation in MC assembler
Hi All,
I have a question about relaxation stuff in MC assembler.
I am encoding conditional branch instructions with PC relative address
in assembler. I have met some tests with relative offsets over the
instruction's address field. I think I need to change the conditional
instruction to multiple instructions with basic blocks for else and then
syntax and it should be done in assembler
2016 Feb 11
2
Question about loading spilled register with fast register allocator
Hi All,
I have a problem with loading spilled register. Let's look at the
simple example as follows:
Machine IR snippet:
...
ADD --> it generates carry.
ADDC --> it uses carry.
...
The fast register allocator is enabled with "-O0" option and it
generates load instruction for one of ADDC's operands spilled between
ADD and ADDC. When I eliminates the frame index for the