diff --git a/llvm/test/Transforms/InstSimplify/ConstProp/copysign.ll b/llvm/test/Transforms/InstSimplify/ConstProp/copysign.ll index 52eb743d827b5..6c0dfbbf881ac 100644 --- a/llvm/test/Transforms/InstSimplify/ConstProp/copysign.ll +++ b/llvm/test/Transforms/InstSimplify/ConstProp/copysign.ll @@ -3,6 +3,9 @@ declare float @llvm.copysign.f32(float, float) declare double @llvm.copysign.f64(double, double) +declare bfloat @llvm.copysign.bf16(bfloat, bfloat) +declare fp128 @llvm.copysign.f128(fp128, fp128) +declare ppc_fp128 @llvm.copysign.ppcf128(ppc_fp128, ppc_fp128) define float @f32_01() { ; CHECK-LABEL: @f32_01( @@ -51,3 +54,84 @@ define double @f64_03() { %x = call double @llvm.copysign.f64(double -1.0, double -2.0) ret double %x } + +define bfloat @bf16_01() { +; CHECK-LABEL: @bf16_01( +; CHECK-NEXT: [[X:%.*]] = call bfloat @llvm.copysign.bf16(bfloat 0xR3F80, bfloat 0xRC000) +; CHECK-NEXT: ret bfloat [[X]] +; + %x = call bfloat @llvm.copysign.bf16(bfloat 1.0, bfloat -2.0) + ret bfloat %x +} + +define bfloat @bf16_02() { +; CHECK-LABEL: @bf16_02( +; CHECK-NEXT: [[X:%.*]] = call bfloat @llvm.copysign.bf16(bfloat 0xRC000, bfloat 0xR3F80) +; CHECK-NEXT: ret bfloat [[X]] +; + %x = call bfloat @llvm.copysign.bf16(bfloat -2.0, bfloat 1.0) + ret bfloat %x +} + +define bfloat @bf16_03() { +; CHECK-LABEL: @bf16_03( +; CHECK-NEXT: [[X:%.*]] = call bfloat @llvm.copysign.bf16(bfloat 0xRC000, bfloat 0xRBF80) +; CHECK-NEXT: ret bfloat [[X]] +; + %x = call bfloat @llvm.copysign.bf16(bfloat -2.0, bfloat -1.0) + ret bfloat %x +} + +define fp128 @f128_01() { +; CHECK-LABEL: @f128_01( +; CHECK-NEXT: [[X:%.*]] = call fp128 @llvm.copysign.f128(fp128 0xL00000000000000000000000000000001, fp128 0xL00000000000000008000000000000002) +; CHECK-NEXT: ret fp128 [[X]] +; + %x = call fp128 @llvm.copysign.f128(fp128 0xL00000000000000000000000000000001, fp128 0xL00000000000000008000000000000002) + ret fp128 %x +} + +define fp128 @f128_02() { +; CHECK-LABEL: @f128_02( +; CHECK-NEXT: [[X:%.*]] = call fp128 @llvm.copysign.f128(fp128 0xL00000000000000008000000000000003, fp128 0xL00000000000000000000000000000004) +; CHECK-NEXT: ret fp128 [[X]] +; + %x = call fp128 @llvm.copysign.f128(fp128 0xL00000000000000008000000000000003, fp128 0xL00000000000000000000000000000004) + ret fp128 %x +} + +define fp128 @f128_03() { +; CHECK-LABEL: @f128_03( +; CHECK-NEXT: [[X:%.*]] = call fp128 @llvm.copysign.f128(fp128 0xL00000000000000008000000000000005, fp128 0xL00000000000000008000000000000006) +; CHECK-NEXT: ret fp128 [[X]] +; + %x = call fp128 @llvm.copysign.f128(fp128 0xL00000000000000008000000000000005, fp128 0xL00000000000000008000000000000006) + ret fp128 %x +} + +define ppc_fp128 @ppc128_01() { +; CHECK-LABEL: @ppc128_01( +; CHECK-NEXT: [[X:%.*]] = call ppc_fp128 @llvm.copysign.ppcf128(ppc_fp128 0xM00000000000000000000000000000001, ppc_fp128 0xM80000000000000000000000000000002) +; CHECK-NEXT: ret ppc_fp128 [[X]] +; + %x = call ppc_fp128 @llvm.copysign.ppcf128(ppc_fp128 0xM00000000000000000000000000000001, ppc_fp128 0xM80000000000000000000000000000002) + ret ppc_fp128 %x +} + +define ppc_fp128 @ppc128_02() { +; CHECK-LABEL: @ppc128_02( +; CHECK-NEXT: [[X:%.*]] = call ppc_fp128 @llvm.copysign.ppcf128(ppc_fp128 0xM80000000000000000000000000000003, ppc_fp128 0xM00000000000000000000000000000004) +; CHECK-NEXT: ret ppc_fp128 [[X]] +; + %x = call ppc_fp128 @llvm.copysign.ppcf128(ppc_fp128 0xM80000000000000000000000000000003, ppc_fp128 0xM00000000000000000000000000000004) + ret ppc_fp128 %x +} + +define ppc_fp128 @ppc128_03() { +; CHECK-LABEL: @ppc128_03( +; CHECK-NEXT: [[X:%.*]] = call ppc_fp128 @llvm.copysign.ppcf128(ppc_fp128 0xM80000000000000000000000000000005, ppc_fp128 0xM80000000000000000000000000000006) +; CHECK-NEXT: ret ppc_fp128 [[X]] +; + %x = call ppc_fp128 @llvm.copysign.ppcf128(ppc_fp128 0xM80000000000000000000000000000005, ppc_fp128 0xM80000000000000000000000000000006) + ret ppc_fp128 %x +}