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