This is the first patch of several to come to add support for quad-precision floating point operations.
Legalize and emit code for quad-precision floating point operations:
- xsaddqp
- xssubqp
- xsdivqp
- xsmulqp
Paths
| Differential D44506
[Power9]Legalize and emit code for quad-precision add/div/mul/sub ClosedPublic Authored by lei on Mar 14 2018, 10:43 PM.
Details Summary This is the first patch of several to come to add support for quad-precision floating point operations. Legalize and emit code for quad-precision floating point operations:
Diff Detail Event TimelineComment Actions LGTM. Please add the requested test case on the commit - no need for an additional review.
This revision is now accepted and ready to land.Mar 16 2018, 5:24 PM Closed by commit rL327878: [PowerPC][Power9]Legalize and emit code for quad-precision add/div/mul/sub (authored by lei). · Explain WhyMar 19 2018, 11:55 AM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 138492 lib/Target/PowerPC/PPCISelLowering.cpp
lib/Target/PowerPC/PPCInstrVSX.td
test/CodeGen/PowerPC/f128-arith.ll
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Can you please add an additional test case for this. We want to make sure no future patches break it. Something along these lines should suffice:
define void @test(i8* nocapture readonly %PtrC, fp128* nocapture %PtrF) { entry: %add.ptr = getelementptr inbounds i8, i8* %PtrC, i64 4 %0 = bitcast i8* %add.ptr to fp128* %1 = load fp128, fp128* %0, align 16 %2 = bitcast fp128* %PtrF to i8* %add.ptr1 = getelementptr inbounds i8, i8* %2, i64 8 %3 = bitcast i8* %add.ptr1 to fp128* store fp128 %1, fp128* %3, align 16 ret void }We need to make sure we emit LXVX and STXVX here rather than their D-Form analogs.