SPE follows soft-float ABI for doubles, including VAARG passing. For
soft-float, doubles are bitcast to i64, but for SPE they are not, so we
need to perform GPR alignment explicitly for SPE f64.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
- Build Status
Buildable 40111 Build 40193: arc lint + arc unit
Event Timeline
Comment Actions
I think that for f64 on SPE the GprIndex you are computing it going to be ignored. (See my comment...)
Also, would it be possible to add a test case to go with it?
llvm/lib/Target/PowerPC/PPCISelLowering.cpp | ||
---|---|---|
3099 | You are computing a new GprIndex above for MVT::f64 on SPE. |
Comment Actions
llvm/lib/Target/PowerPC/PPCISelLowering.cpp | ||
---|---|---|
3099 | Oops, you're right, I need to update RegConstant as well. |
You are computing a new GprIndex above for MVT::f64 on SPE.
However, down here you don't use the newly computed GprIndex because VT.isInteger() is going to return false so you are going to get FprIndex instead.
The same thing happens later on in this function where we use VT.isInteger() ? GprIndex : FprIndex again.
It looks like the newly computed GprIndex is not going to be used since you are always going to be getting FprIndex when you have MVT::f64.