[llvm] d199fd7 - [NFC] Add f128 frexp intrinsics for PowerPC
Qiu Chaofan via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 7 19:27:50 PST 2023
Author: Qiu Chaofan
Date: 2023-11-08T11:27:40+08:00
New Revision: d199fd76f7b76d902d8ef210d82689f299934793
URL: https://github.com/llvm/llvm-project/commit/d199fd76f7b76d902d8ef210d82689f299934793
DIFF: https://github.com/llvm/llvm-project/commit/d199fd76f7b76d902d8ef210d82689f299934793.diff
LOG: [NFC] Add f128 frexp intrinsics for PowerPC
Added:
Modified:
llvm/test/CodeGen/PowerPC/f128-arith.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/PowerPC/f128-arith.ll b/llvm/test/CodeGen/PowerPC/f128-arith.ll
index 98e114f101bdf42..829db926b1704b0 100644
--- a/llvm/test/CodeGen/PowerPC/f128-arith.ll
+++ b/llvm/test/CodeGen/PowerPC/f128-arith.ll
@@ -1306,3 +1306,58 @@ entry:
ret void
}
declare fp128 @llvm.fma.f128(fp128, fp128, fp128)
+
+define dso_local fp128 @qpFREXP(ptr %a, ptr %b) {
+; CHECK-LABEL: qpFREXP:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: mflr r0
+; CHECK-NEXT: .cfi_def_cfa_offset 64
+; CHECK-NEXT: .cfi_offset lr, 16
+; CHECK-NEXT: .cfi_offset r30, -16
+; CHECK-NEXT: std r30, -16(r1) # 8-byte Folded Spill
+; CHECK-NEXT: stdu r1, -64(r1)
+; CHECK-NEXT: std r0, 80(r1)
+; CHECK-NEXT: addi r5, r1, 44
+; CHECK-NEXT: mr r30, r4
+; CHECK-NEXT: lxv v2, 0(r3)
+; CHECK-NEXT: bl frexpl
+; CHECK-NEXT: nop
+; CHECK-NEXT: lwz r3, 44(r1)
+; CHECK-NEXT: stw r3, 0(r30)
+; CHECK-NEXT: addi r1, r1, 64
+; CHECK-NEXT: ld r0, 16(r1)
+; CHECK-NEXT: ld r30, -16(r1) # 8-byte Folded Reload
+; CHECK-NEXT: mtlr r0
+; CHECK-NEXT: blr
+;
+; CHECK-P8-LABEL: qpFREXP:
+; CHECK-P8: # %bb.0: # %entry
+; CHECK-P8-NEXT: mflr r0
+; CHECK-P8-NEXT: .cfi_def_cfa_offset 64
+; CHECK-P8-NEXT: .cfi_offset lr, 16
+; CHECK-P8-NEXT: .cfi_offset r30, -16
+; CHECK-P8-NEXT: std r30, -16(r1) # 8-byte Folded Spill
+; CHECK-P8-NEXT: stdu r1, -64(r1)
+; CHECK-P8-NEXT: std r0, 80(r1)
+; CHECK-P8-NEXT: addi r5, r1, 44
+; CHECK-P8-NEXT: mr r30, r4
+; CHECK-P8-NEXT: lxvd2x vs0, 0, r3
+; CHECK-P8-NEXT: xxswapd v2, vs0
+; CHECK-P8-NEXT: bl frexpl
+; CHECK-P8-NEXT: nop
+; CHECK-P8-NEXT: lwz r3, 44(r1)
+; CHECK-P8-NEXT: stw r3, 0(r30)
+; CHECK-P8-NEXT: addi r1, r1, 64
+; CHECK-P8-NEXT: ld r0, 16(r1)
+; CHECK-P8-NEXT: ld r30, -16(r1) # 8-byte Folded Reload
+; CHECK-P8-NEXT: mtlr r0
+; CHECK-P8-NEXT: blr
+entry:
+ %0 = load fp128, ptr %a, align 16
+ %1 = tail call { fp128, i32 } @llvm.frexp.f128.i32(fp128 %0)
+ %2 = extractvalue { fp128, i32 } %1, 1
+ store i32 %2, ptr %b, align 4
+ %3 = extractvalue { fp128, i32 } %1, 0
+ ret fp128 %3
+}
+declare { fp128, i32 } @llvm.frexp.f128.i32(fp128)
More information about the llvm-commits
mailing list