diff options
| author | Craig Topper <craig.topper@intel.com> | 2018-03-20 18:49:28 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2018-03-20 18:49:28 +0000 |
| commit | c2dbd677bd790ff750acff632dfc81c2d3895f8c (patch) | |
| tree | 9f41e24e24eb435f5fa037a4d4738cc27a80bd38 /llvm/test | |
| parent | eb0c510ecde667cd911682cc1e855f73f341d134 (diff) | |
| download | bcm5719-llvm-c2dbd677bd790ff750acff632dfc81c2d3895f8c.tar.gz bcm5719-llvm-c2dbd677bd790ff750acff632dfc81c2d3895f8c.zip | |
[PowerPC][LegalizeFloatTypes] Move the PPC hacks for (i32 fp_to_sint/fp_to_uint (ppcf128 X)) out of LegalizeFloatTypes and into PPC specific code
I'm not entirely sure these hacks are still needed. If you remove the hacks completely, the name of the library call that gets generated doesn't match the grep the test previously had. So the test wasn't really checking anything.
If the hack is still needed it belongs in PPC specific code. I believe the FP_TO_SINT code here is the only place in the tree where a FP_ROUND_INREG node is created today. And I don't think its even being used correctly because the legalization returned a BUILD_PAIR with the same value twice. That doesn't seem right to me. By moving the code entirely to PPC we can avoid creating the FP_ROUND_INREG at all.
I replaced the grep in the existing test with full checks generated by hacking update_llc_test_check.py to support ppc32 just long enough to generate it.
Differential Revision: https://reviews.llvm.org/D44061
llvm-svn: 328017
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/CodeGen/PowerPC/2008-10-28-f128-i32.ll | 319 |
1 files changed, 318 insertions, 1 deletions
diff --git a/llvm/test/CodeGen/PowerPC/2008-10-28-f128-i32.ll b/llvm/test/CodeGen/PowerPC/2008-10-28-f128-i32.ll index 3fa9d81c8dc..45a8c7313d8 100644 --- a/llvm/test/CodeGen/PowerPC/2008-10-28-f128-i32.ll +++ b/llvm/test/CodeGen/PowerPC/2008-10-28-f128-i32.ll @@ -1,6 +1,323 @@ -; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32-- -o - | not grep fixunstfsi +; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32-- -o - | FileCheck %s define i64 @__fixunstfdi(ppc_fp128 %a) nounwind readnone { +; CHECK-LABEL: __fixunstfdi: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: mflr 0 +; CHECK-NEXT: stw 0, 4(1) +; CHECK-NEXT: stwu 1, -464(1) +; CHECK-NEXT: lis 3, .LCPI0_0@ha +; CHECK-NEXT: stfd 27, 424(1) # 8-byte Folded Spill +; CHECK-NEXT: stw 29, 412(1) # 4-byte Folded Spill +; CHECK-NEXT: stw 30, 416(1) # 4-byte Folded Spill +; CHECK-NEXT: lfs 27, .LCPI0_0@l(3) +; CHECK-NEXT: mfcr 12 +; CHECK-NEXT: stfd 28, 432(1) # 8-byte Folded Spill +; CHECK-NEXT: stfd 29, 440(1) # 8-byte Folded Spill +; CHECK-NEXT: stfd 30, 448(1) # 8-byte Folded Spill +; CHECK-NEXT: stfd 31, 456(1) # 8-byte Folded Spill +; CHECK-NEXT: stw 12, 408(1) +; CHECK-NEXT: stfd 2, 376(1) +; CHECK-NEXT: stfd 1, 384(1) +; CHECK-NEXT: nop +; CHECK-NEXT: fcmpu 0, 2, 27 +; CHECK-NEXT: lwz 3, 380(1) +; CHECK-NEXT: lwz 4, 376(1) +; CHECK-NEXT: lwz 5, 388(1) +; CHECK-NEXT: lwz 6, 384(1) +; CHECK-NEXT: fcmpu 1, 1, 27 +; CHECK-NEXT: crand 20, 6, 0 +; CHECK-NEXT: cror 20, 4, 20 +; CHECK-NEXT: stw 3, 396(1) +; CHECK-NEXT: stw 4, 392(1) +; CHECK-NEXT: stw 5, 404(1) +; CHECK-NEXT: stw 6, 400(1) +; CHECK-NEXT: bc 4, 20, .LBB0_2 +; CHECK-NEXT: # %bb.1: # %bb5 +; CHECK-NEXT: li 3, 0 +; CHECK-NEXT: li 4, 0 +; CHECK-NEXT: b .LBB0_16 +; CHECK-NEXT: .LBB0_2: # %bb1 +; CHECK-NEXT: lfd 0, 392(1) +; CHECK-NEXT: lfd 1, 400(1) +; CHECK-NEXT: li 29, 0 +; CHECK-NEXT: lis 3, 15856 +; CHECK-NEXT: stfd 1, 304(1) +; CHECK-NEXT: stfd 0, 296(1) +; CHECK-NEXT: nop +; CHECK-NEXT: nop +; CHECK-NEXT: lwz 4, 308(1) +; CHECK-NEXT: lwz 5, 304(1) +; CHECK-NEXT: lwz 6, 300(1) +; CHECK-NEXT: lwz 7, 296(1) +; CHECK-NEXT: stw 29, 340(1) +; CHECK-NEXT: stw 3, 336(1) +; CHECK-NEXT: stw 29, 332(1) +; CHECK-NEXT: stw 29, 328(1) +; CHECK-NEXT: stw 4, 324(1) +; CHECK-NEXT: stw 5, 320(1) +; CHECK-NEXT: stw 6, 316(1) +; CHECK-NEXT: stw 7, 312(1) +; CHECK-NEXT: nop +; CHECK-NEXT: lfd 31, 320(1) +; CHECK-NEXT: lfd 30, 312(1) +; CHECK-NEXT: lfd 3, 336(1) +; CHECK-NEXT: lfd 4, 328(1) +; CHECK-NEXT: fmr 1, 31 +; CHECK-NEXT: fmr 2, 30 +; CHECK-NEXT: bl __gcc_qmul@PLT +; CHECK-NEXT: stfd 1, 280(1) +; CHECK-NEXT: stfd 2, 288(1) +; CHECK-NEXT: lis 3, .LCPI0_1@ha +; CHECK-NEXT: fmr 29, 1 +; CHECK-NEXT: fmr 28, 2 +; CHECK-NEXT: fcmpu 0, 2, 27 +; CHECK-NEXT: lwz 4, 284(1) +; CHECK-NEXT: lwz 5, 280(1) +; CHECK-NEXT: lwz 6, 292(1) +; CHECK-NEXT: lwz 7, 288(1) +; CHECK-NEXT: lfs 0, .LCPI0_1@l(3) +; CHECK-NEXT: lis 3, 16864 +; CHECK-NEXT: stw 29, 372(1) +; CHECK-NEXT: stw 3, 368(1) +; CHECK-NEXT: stw 29, 364(1) +; CHECK-NEXT: stw 29, 360(1) +; CHECK-NEXT: stw 4, 356(1) +; CHECK-NEXT: stw 5, 352(1) +; CHECK-NEXT: stw 6, 348(1) +; CHECK-NEXT: stw 7, 344(1) +; CHECK-NEXT: fcmpu 1, 1, 0 +; CHECK-NEXT: lfd 3, 368(1) +; CHECK-NEXT: lfd 4, 360(1) +; CHECK-NEXT: lfd 1, 352(1) +; CHECK-NEXT: lfd 2, 344(1) +; CHECK-NEXT: crandc 20, 6, 0 +; CHECK-NEXT: cror 8, 5, 20 +; CHECK-NEXT: bl __gcc_qsub@PLT +; CHECK-NEXT: mffs 0 +; CHECK-NEXT: mtfsb1 31 +; CHECK-NEXT: mtfsb0 30 +; CHECK-NEXT: fadd 1, 2, 1 +; CHECK-NEXT: mtfsf 1, 0 +; CHECK-NEXT: mffs 0 +; CHECK-NEXT: mtfsb1 31 +; CHECK-NEXT: mtfsb0 30 +; CHECK-NEXT: fadd 2, 28, 29 +; CHECK-NEXT: mtfsf 1, 0 +; CHECK-NEXT: fctiwz 0, 1 +; CHECK-NEXT: fctiwz 1, 2 +; CHECK-NEXT: stfd 0, 160(1) +; CHECK-NEXT: stfd 1, 152(1) +; CHECK-NEXT: nop +; CHECK-NEXT: lwz 3, 164(1) +; CHECK-NEXT: lwz 4, 156(1) +; CHECK-NEXT: addis 3, 3, -32768 +; CHECK-NEXT: bc 12, 8, .LBB0_4 +; CHECK-NEXT: # %bb.3: # %bb1 +; CHECK-NEXT: ori 30, 4, 0 +; CHECK-NEXT: b .LBB0_5 +; CHECK-NEXT: .LBB0_4: # %bb1 +; CHECK-NEXT: addi 30, 3, 0 +; CHECK-NEXT: .LBB0_5: # %bb1 +; CHECK-NEXT: mr 3, 30 +; CHECK-NEXT: li 4, 0 +; CHECK-NEXT: bl __floatditf@PLT +; CHECK-NEXT: stfd 1, 208(1) +; CHECK-NEXT: stfd 2, 200(1) +; CHECK-NEXT: lis 3, 17392 +; CHECK-NEXT: fmr 28, 1 +; CHECK-NEXT: fmr 29, 2 +; CHECK-NEXT: cmpwi 2, 30, 0 +; CHECK-NEXT: lwz 4, 212(1) +; CHECK-NEXT: lwz 5, 208(1) +; CHECK-NEXT: lwz 6, 204(1) +; CHECK-NEXT: lwz 7, 200(1) +; CHECK-NEXT: stw 29, 244(1) +; CHECK-NEXT: stw 3, 240(1) +; CHECK-NEXT: stw 29, 236(1) +; CHECK-NEXT: stw 29, 232(1) +; CHECK-NEXT: stw 4, 228(1) +; CHECK-NEXT: stw 5, 224(1) +; CHECK-NEXT: stw 6, 220(1) +; CHECK-NEXT: stw 7, 216(1) +; CHECK-NEXT: nop +; CHECK-NEXT: lfd 3, 240(1) +; CHECK-NEXT: lfd 4, 232(1) +; CHECK-NEXT: lfd 1, 224(1) +; CHECK-NEXT: lfd 2, 216(1) +; CHECK-NEXT: bl __gcc_qadd@PLT +; CHECK-NEXT: blt 2, .LBB0_7 +; CHECK-NEXT: # %bb.6: # %bb1 +; CHECK-NEXT: fmr 1, 28 +; CHECK-NEXT: .LBB0_7: # %bb1 +; CHECK-NEXT: stfd 1, 184(1) +; CHECK-NEXT: blt 2, .LBB0_9 +; CHECK-NEXT: # %bb.8: # %bb1 +; CHECK-NEXT: fmr 2, 29 +; CHECK-NEXT: .LBB0_9: # %bb1 +; CHECK-NEXT: stfd 2, 192(1) +; CHECK-NEXT: fmr 1, 31 +; CHECK-NEXT: fmr 2, 30 +; CHECK-NEXT: nop +; CHECK-NEXT: nop +; CHECK-NEXT: lwz 3, 188(1) +; CHECK-NEXT: lwz 4, 184(1) +; CHECK-NEXT: lwz 5, 196(1) +; CHECK-NEXT: lwz 6, 192(1) +; CHECK-NEXT: stw 3, 260(1) +; CHECK-NEXT: stw 4, 256(1) +; CHECK-NEXT: stw 5, 252(1) +; CHECK-NEXT: stw 6, 248(1) +; CHECK-NEXT: lfd 3, 256(1) +; CHECK-NEXT: lfd 4, 248(1) +; CHECK-NEXT: bl __gcc_qsub@PLT +; CHECK-NEXT: stfd 2, 176(1) +; CHECK-NEXT: stfd 1, 168(1) +; CHECK-NEXT: fcmpu 1, 1, 27 +; CHECK-NEXT: fcmpu 0, 2, 27 +; CHECK-NEXT: lwz 3, 180(1) +; CHECK-NEXT: lwz 4, 176(1) +; CHECK-NEXT: lwz 5, 172(1) +; CHECK-NEXT: lwz 6, 168(1) +; CHECK-NEXT: crandc 20, 6, 0 +; CHECK-NEXT: cror 21, 5, 7 +; CHECK-NEXT: cror 20, 21, 20 +; CHECK-NEXT: stw 3, 268(1) +; CHECK-NEXT: stw 4, 264(1) +; CHECK-NEXT: stw 5, 276(1) +; CHECK-NEXT: stw 6, 272(1) +; CHECK-NEXT: lfd 30, 264(1) +; CHECK-NEXT: lfd 31, 272(1) +; CHECK-NEXT: bc 12, 20, .LBB0_13 +; CHECK-NEXT: # %bb.10: # %bb2 +; CHECK-NEXT: fneg 29, 31 +; CHECK-NEXT: fneg 28, 30 +; CHECK-NEXT: li 29, 0 +; CHECK-NEXT: lis 3, 16864 +; CHECK-NEXT: stfd 29, 48(1) +; CHECK-NEXT: stfd 28, 40(1) +; CHECK-NEXT: nop +; CHECK-NEXT: lwz 4, 52(1) +; CHECK-NEXT: lwz 5, 48(1) +; CHECK-NEXT: lwz 6, 44(1) +; CHECK-NEXT: lwz 7, 40(1) +; CHECK-NEXT: stw 29, 84(1) +; CHECK-NEXT: stw 3, 80(1) +; CHECK-NEXT: stw 29, 76(1) +; CHECK-NEXT: stw 29, 72(1) +; CHECK-NEXT: stw 4, 68(1) +; CHECK-NEXT: stw 5, 64(1) +; CHECK-NEXT: stw 6, 60(1) +; CHECK-NEXT: stw 7, 56(1) +; CHECK-NEXT: nop +; CHECK-NEXT: lfd 3, 80(1) +; CHECK-NEXT: lfd 4, 72(1) +; CHECK-NEXT: lfd 1, 64(1) +; CHECK-NEXT: lfd 2, 56(1) +; CHECK-NEXT: bl __gcc_qsub@PLT +; CHECK-NEXT: lis 3, .LCPI0_2@ha +; CHECK-NEXT: lis 4, .LCPI0_3@ha +; CHECK-NEXT: lfs 0, .LCPI0_2@l(3) +; CHECK-NEXT: mffs 11 +; CHECK-NEXT: mtfsb1 31 +; CHECK-NEXT: lfs 3, .LCPI0_3@l(4) +; CHECK-NEXT: mtfsb0 30 +; CHECK-NEXT: fcmpu 0, 30, 0 +; CHECK-NEXT: fcmpu 1, 31, 3 +; CHECK-NEXT: fadd 1, 2, 1 +; CHECK-NEXT: crandc 20, 6, 1 +; CHECK-NEXT: mtfsf 1, 11 +; CHECK-NEXT: cror 20, 4, 20 +; CHECK-NEXT: mffs 0 +; CHECK-NEXT: mtfsb1 31 +; CHECK-NEXT: mtfsb0 30 +; CHECK-NEXT: fadd 12, 28, 29 +; CHECK-NEXT: mtfsf 1, 0 +; CHECK-NEXT: fctiwz 0, 1 +; CHECK-NEXT: fctiwz 13, 12 +; CHECK-NEXT: stfd 0, 32(1) +; CHECK-NEXT: stfd 13, 24(1) +; CHECK-NEXT: nop +; CHECK-NEXT: lwz 3, 36(1) +; CHECK-NEXT: lwz 4, 28(1) +; CHECK-NEXT: addis 3, 3, -32768 +; CHECK-NEXT: bc 12, 20, .LBB0_12 +; CHECK-NEXT: # %bb.11: # %bb2 +; CHECK-NEXT: ori 3, 4, 0 +; CHECK-NEXT: b .LBB0_12 +; CHECK-NEXT: .LBB0_12: # %bb2 +; CHECK-NEXT: subfic 4, 3, 0 +; CHECK-NEXT: subfe 3, 29, 30 +; CHECK-NEXT: b .LBB0_16 +; CHECK-NEXT: .LBB0_13: # %bb3 +; CHECK-NEXT: stfd 31, 112(1) +; CHECK-NEXT: stfd 30, 104(1) +; CHECK-NEXT: li 3, 0 +; CHECK-NEXT: lis 4, 16864 +; CHECK-NEXT: lwz 5, 116(1) +; CHECK-NEXT: lwz 6, 112(1) +; CHECK-NEXT: lwz 7, 108(1) +; CHECK-NEXT: lwz 8, 104(1) +; CHECK-NEXT: stw 3, 148(1) +; CHECK-NEXT: stw 4, 144(1) +; CHECK-NEXT: stw 3, 140(1) +; CHECK-NEXT: stw 3, 136(1) +; CHECK-NEXT: stw 5, 132(1) +; CHECK-NEXT: stw 6, 128(1) +; CHECK-NEXT: stw 7, 124(1) +; CHECK-NEXT: stw 8, 120(1) +; CHECK-NEXT: nop +; CHECK-NEXT: lfd 3, 144(1) +; CHECK-NEXT: lfd 4, 136(1) +; CHECK-NEXT: lfd 1, 128(1) +; CHECK-NEXT: lfd 2, 120(1) +; CHECK-NEXT: bl __gcc_qsub@PLT +; CHECK-NEXT: lis 3, .LCPI0_0@ha +; CHECK-NEXT: lis 4, .LCPI0_1@ha +; CHECK-NEXT: lfs 0, .LCPI0_0@l(3) +; CHECK-NEXT: mffs 11 +; CHECK-NEXT: mtfsb1 31 +; CHECK-NEXT: lfs 3, .LCPI0_1@l(4) +; CHECK-NEXT: mtfsb0 30 +; CHECK-NEXT: fcmpu 0, 30, 0 +; CHECK-NEXT: fcmpu 1, 31, 3 +; CHECK-NEXT: fadd 1, 2, 1 +; CHECK-NEXT: crandc 20, 6, 0 +; CHECK-NEXT: mtfsf 1, 11 +; CHECK-NEXT: cror 20, 5, 20 +; CHECK-NEXT: mffs 0 +; CHECK-NEXT: mtfsb1 31 +; CHECK-NEXT: mtfsb0 30 +; CHECK-NEXT: fadd 12, 30, 31 +; CHECK-NEXT: mtfsf 1, 0 +; CHECK-NEXT: fctiwz 0, 1 +; CHECK-NEXT: fctiwz 13, 12 +; CHECK-NEXT: stfd 0, 96(1) +; CHECK-NEXT: stfd 13, 88(1) +; CHECK-NEXT: nop +; CHECK-NEXT: lwz 3, 100(1) +; CHECK-NEXT: lwz 4, 92(1) +; CHECK-NEXT: addis 3, 3, -32768 +; CHECK-NEXT: bc 12, 20, .LBB0_14 +; CHECK-NEXT: b .LBB0_15 +; CHECK-NEXT: .LBB0_14: # %bb3 +; CHECK-NEXT: addi 4, 3, 0 +; CHECK-NEXT: .LBB0_15: # %bb3 +; CHECK-NEXT: mr 3, 30 +; CHECK-NEXT: .LBB0_16: # %bb5 +; CHECK-NEXT: lwz 12, 408(1) +; CHECK-NEXT: lfd 31, 456(1) # 8-byte Folded Reload +; CHECK-NEXT: lfd 30, 448(1) # 8-byte Folded Reload +; CHECK-NEXT: lfd 29, 440(1) # 8-byte Folded Reload +; CHECK-NEXT: lfd 28, 432(1) # 8-byte Folded Reload +; CHECK-NEXT: lfd 27, 424(1) # 8-byte Folded Reload +; CHECK-NEXT: lwz 30, 416(1) # 4-byte Folded Reload +; CHECK-NEXT: lwz 29, 412(1) # 4-byte Folded Reload +; CHECK-NEXT: lwz 0, 468(1) +; CHECK-NEXT: mtcrf 32, 12 # cr2 +; CHECK-NEXT: addi 1, 1, 464 +; CHECK-NEXT: mtlr 0 +; CHECK-NEXT: blr entry: %0 = fcmp olt ppc_fp128 %a, 0xM00000000000000000000000000000000 ; <i1> [#uses=1] br i1 %0, label %bb5, label %bb1 |

