summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM64/ARM64ISelLowering.cpp
diff options
context:
space:
mode:
authorJames Molloy <james.molloy@arm.com>2014-05-07 12:33:41 +0000
committerJames Molloy <james.molloy@arm.com>2014-05-07 12:33:41 +0000
commit4049e4fd771c5cf66b8733507dd91be23dc327dd (patch)
treeac094f93d3c88f1ddd4eea03f3227a2388475fea /llvm/lib/Target/ARM64/ARM64ISelLowering.cpp
parent4cd0782bf26d0c938a8ec5e043c0b4a4205f46aa (diff)
downloadbcm5719-llvm-4049e4fd771c5cf66b8733507dd91be23dc327dd.tar.gz
bcm5719-llvm-4049e4fd771c5cf66b8733507dd91be23dc327dd.zip
[ARM64-BE] Implement the lane-twiddling logic at AAPCS boundaries for big endian.
The AAPCS states that values passed in registers must have a value as though they had been loaded with "LDR". LDR is equivalent to "LD1.64 vX.1D" - that is, loading scalars to vector registers and loading 1-element vectors is equivalent. The logic implemented here is to ensure that at all call boundaries and during formal argument lowering all vectors are treated as their bitwidth-based floating point scalar counterpart, which is always one of f64 or f128 (v2i32 -> f64, v4i32 -> f128 etc). A BITCAST is inserted so that the appropriate REV will be generated during code generation. llvm-svn: 208198
Diffstat (limited to 'llvm/lib/Target/ARM64/ARM64ISelLowering.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud