xref: /llvm-project/llvm/test/Transforms/InstSimplify/ConstProp/copysign.ll (revision b280ee1dd7e9b36ae7aaa3953556e4b7a7f31a29)
1486ed885SArthur Eubanks; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2*b280ee1dSBjorn Pettersson; RUN: opt -S -passes=instsimplify < %s | FileCheck %s
3486ed885SArthur Eubanks
4486ed885SArthur Eubanksdeclare float @llvm.copysign.f32(float, float)
5486ed885SArthur Eubanksdeclare double @llvm.copysign.f64(double, double)
68a4d05ddSSanjay Pateldeclare bfloat @llvm.copysign.bf16(bfloat, bfloat)
78a4d05ddSSanjay Pateldeclare fp128 @llvm.copysign.f128(fp128, fp128)
88a4d05ddSSanjay Pateldeclare ppc_fp128 @llvm.copysign.ppcf128(ppc_fp128, ppc_fp128)
9486ed885SArthur Eubanks
10486ed885SArthur Eubanksdefine float @f32_01() {
11486ed885SArthur Eubanks; CHECK-LABEL: @f32_01(
12486ed885SArthur Eubanks; CHECK-NEXT:    ret float -1.000000e+00
13486ed885SArthur Eubanks;
14486ed885SArthur Eubanks  %x = call float @llvm.copysign.f32(float 1.0, float -2.0)
15486ed885SArthur Eubanks  ret float %x
16486ed885SArthur Eubanks}
17486ed885SArthur Eubanks
18486ed885SArthur Eubanksdefine float @f32_02() {
19486ed885SArthur Eubanks; CHECK-LABEL: @f32_02(
20486ed885SArthur Eubanks; CHECK-NEXT:    ret float 2.000000e+00
21486ed885SArthur Eubanks;
22486ed885SArthur Eubanks  %x = call float @llvm.copysign.f32(float -2.0, float 1.0)
23486ed885SArthur Eubanks  ret float %x
24486ed885SArthur Eubanks}
25486ed885SArthur Eubanks
26486ed885SArthur Eubanksdefine float @f32_03() {
27486ed885SArthur Eubanks; CHECK-LABEL: @f32_03(
28486ed885SArthur Eubanks; CHECK-NEXT:    ret float -2.000000e+00
29486ed885SArthur Eubanks;
30486ed885SArthur Eubanks  %x = call float @llvm.copysign.f32(float -2.0, float -1.0)
31486ed885SArthur Eubanks  ret float %x
32486ed885SArthur Eubanks}
33486ed885SArthur Eubanks
34486ed885SArthur Eubanksdefine double @f64_01() {
35486ed885SArthur Eubanks; CHECK-LABEL: @f64_01(
36486ed885SArthur Eubanks; CHECK-NEXT:    ret double -1.000000e+00
37486ed885SArthur Eubanks;
38486ed885SArthur Eubanks  %x = call double @llvm.copysign.f64(double 1.0, double -2.0)
39486ed885SArthur Eubanks  ret double %x
40486ed885SArthur Eubanks}
41486ed885SArthur Eubanks
42486ed885SArthur Eubanksdefine double @f64_02() {
43486ed885SArthur Eubanks; CHECK-LABEL: @f64_02(
44486ed885SArthur Eubanks; CHECK-NEXT:    ret double 1.000000e+00
45486ed885SArthur Eubanks;
46486ed885SArthur Eubanks  %x = call double @llvm.copysign.f64(double -1.0, double 2.0)
47486ed885SArthur Eubanks  ret double %x
48486ed885SArthur Eubanks}
49486ed885SArthur Eubanks
50486ed885SArthur Eubanksdefine double @f64_03() {
51486ed885SArthur Eubanks; CHECK-LABEL: @f64_03(
52486ed885SArthur Eubanks; CHECK-NEXT:    ret double -1.000000e+00
53486ed885SArthur Eubanks;
54486ed885SArthur Eubanks  %x = call double @llvm.copysign.f64(double -1.0, double -2.0)
55486ed885SArthur Eubanks  ret double %x
56486ed885SArthur Eubanks}
578a4d05ddSSanjay Patel
588a4d05ddSSanjay Pateldefine bfloat @bf16_01() {
598a4d05ddSSanjay Patel; CHECK-LABEL: @bf16_01(
608ff36aabSSerge Pavlov; CHECK-NEXT:    ret bfloat 0xRBF80
618a4d05ddSSanjay Patel;
628a4d05ddSSanjay Patel  %x = call bfloat @llvm.copysign.bf16(bfloat 1.0, bfloat -2.0)
638a4d05ddSSanjay Patel  ret bfloat %x
648a4d05ddSSanjay Patel}
658a4d05ddSSanjay Patel
668a4d05ddSSanjay Pateldefine bfloat @bf16_02() {
678a4d05ddSSanjay Patel; CHECK-LABEL: @bf16_02(
688ff36aabSSerge Pavlov; CHECK-NEXT:    ret bfloat 0xR4000
698a4d05ddSSanjay Patel;
708a4d05ddSSanjay Patel  %x = call bfloat @llvm.copysign.bf16(bfloat -2.0, bfloat 1.0)
718a4d05ddSSanjay Patel  ret bfloat %x
728a4d05ddSSanjay Patel}
738a4d05ddSSanjay Patel
748a4d05ddSSanjay Pateldefine bfloat @bf16_03() {
758a4d05ddSSanjay Patel; CHECK-LABEL: @bf16_03(
768ff36aabSSerge Pavlov; CHECK-NEXT:    ret bfloat 0xRC000
778a4d05ddSSanjay Patel;
788a4d05ddSSanjay Patel  %x = call bfloat @llvm.copysign.bf16(bfloat -2.0, bfloat -1.0)
798a4d05ddSSanjay Patel  ret bfloat %x
808a4d05ddSSanjay Patel}
818a4d05ddSSanjay Patel
828a4d05ddSSanjay Pateldefine fp128 @f128_01() {
838a4d05ddSSanjay Patel; CHECK-LABEL: @f128_01(
848ff36aabSSerge Pavlov; CHECK-NEXT:    ret fp128 0xL00000000000000008000000000000001
858a4d05ddSSanjay Patel;
868a4d05ddSSanjay Patel  %x = call fp128 @llvm.copysign.f128(fp128 0xL00000000000000000000000000000001, fp128 0xL00000000000000008000000000000002)
878a4d05ddSSanjay Patel  ret fp128 %x
888a4d05ddSSanjay Patel}
898a4d05ddSSanjay Patel
908a4d05ddSSanjay Pateldefine fp128 @f128_02() {
918a4d05ddSSanjay Patel; CHECK-LABEL: @f128_02(
928ff36aabSSerge Pavlov; CHECK-NEXT:    ret fp128 0xL00000000000000000000000000000003
938a4d05ddSSanjay Patel;
948a4d05ddSSanjay Patel  %x = call fp128 @llvm.copysign.f128(fp128 0xL00000000000000008000000000000003, fp128 0xL00000000000000000000000000000004)
958a4d05ddSSanjay Patel  ret fp128 %x
968a4d05ddSSanjay Patel}
978a4d05ddSSanjay Patel
988a4d05ddSSanjay Pateldefine fp128 @f128_03() {
998a4d05ddSSanjay Patel; CHECK-LABEL: @f128_03(
1008ff36aabSSerge Pavlov; CHECK-NEXT:    ret fp128 0xL00000000000000008000000000000005
1018a4d05ddSSanjay Patel;
1028a4d05ddSSanjay Patel  %x = call fp128 @llvm.copysign.f128(fp128 0xL00000000000000008000000000000005, fp128 0xL00000000000000008000000000000006)
1038a4d05ddSSanjay Patel  ret fp128 %x
1048a4d05ddSSanjay Patel}
1058a4d05ddSSanjay Patel
1068a4d05ddSSanjay Pateldefine ppc_fp128 @ppc128_01() {
1078a4d05ddSSanjay Patel; CHECK-LABEL: @ppc128_01(
1088ff36aabSSerge Pavlov; CHECK-NEXT:    ret ppc_fp128 0xM80000000000000008000000000000001
1098a4d05ddSSanjay Patel;
1108a4d05ddSSanjay Patel  %x = call ppc_fp128 @llvm.copysign.ppcf128(ppc_fp128 0xM00000000000000000000000000000001, ppc_fp128 0xM80000000000000000000000000000002)
1118a4d05ddSSanjay Patel  ret ppc_fp128 %x
1128a4d05ddSSanjay Patel}
1138a4d05ddSSanjay Patel
1148a4d05ddSSanjay Pateldefine ppc_fp128 @ppc128_02() {
1158a4d05ddSSanjay Patel; CHECK-LABEL: @ppc128_02(
1168ff36aabSSerge Pavlov; CHECK-NEXT:    ret ppc_fp128 0xM00000000000000008000000000000003
1178a4d05ddSSanjay Patel;
1188a4d05ddSSanjay Patel  %x = call ppc_fp128 @llvm.copysign.ppcf128(ppc_fp128 0xM80000000000000000000000000000003, ppc_fp128 0xM00000000000000000000000000000004)
1198a4d05ddSSanjay Patel  ret ppc_fp128 %x
1208a4d05ddSSanjay Patel}
1218a4d05ddSSanjay Patel
1228a4d05ddSSanjay Pateldefine ppc_fp128 @ppc128_03() {
1238a4d05ddSSanjay Patel; CHECK-LABEL: @ppc128_03(
1248ff36aabSSerge Pavlov; CHECK-NEXT:    ret ppc_fp128 0xM80000000000000000000000000000005
1258a4d05ddSSanjay Patel;
1268a4d05ddSSanjay Patel  %x = call ppc_fp128 @llvm.copysign.ppcf128(ppc_fp128 0xM80000000000000000000000000000005, ppc_fp128 0xM80000000000000000000000000000006)
1278a4d05ddSSanjay Patel  ret ppc_fp128 %x
1288a4d05ddSSanjay Patel}
129