90 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mcpu=pwr10 -ppc-asm-full-reg-names \3; RUN: -verify-machineinstrs --enable-no-signed-zeros-fp-math \4; RUN: --enable-no-nans-fp-math \5; RUN: -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s6; RUN: llc -mcpu=pwr10 -ppc-asm-full-reg-names -verify-machineinstrs \7; RUN: -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s8define dso_local fp128 @testqmax(fp128 %a, fp128 %b) local_unnamed_addr {9; CHECK-LABEL: testqmax:10; CHECK: # %bb.0: # %entry11; CHECK-NEXT: xsmaxcqp v2, v2, v312; CHECK-NEXT: blr13entry:14 %cmp = fcmp ogt fp128 %a, %b15 %cond = select i1 %cmp, fp128 %a, fp128 %b16 ret fp128 %cond17}18 19define dso_local fp128 @testqmin(fp128 %a, fp128 %b) local_unnamed_addr {20; CHECK-LABEL: testqmin:21; CHECK: # %bb.0: # %entry22; CHECK-NEXT: xsmincqp v2, v2, v323; CHECK-NEXT: blr24entry:25 %cmp = fcmp olt fp128 %a, %b26 %cond = select i1 %cmp, fp128 %a, fp128 %b27 ret fp128 %cond28}29 30define dso_local fp128 @testqmax_fast(fp128 %a, fp128 %b) local_unnamed_addr {31; CHECK-LABEL: testqmax_fast:32; CHECK: # %bb.0: # %entry33; CHECK-NEXT: xsmaxcqp v2, v2, v334; CHECK-NEXT: blr35entry:36 %cmp = fcmp nnan ninf ogt fp128 %a, %b37 %cond = select i1 %cmp, fp128 %a, fp128 %b38 ret fp128 %cond39}40 41define dso_local fp128 @testqmin_fast(fp128 %a, fp128 %b) local_unnamed_addr {42; CHECK-LABEL: testqmin_fast:43; CHECK: # %bb.0: # %entry44; CHECK-NEXT: xsmincqp v2, v2, v345; CHECK-NEXT: blr46entry:47 %cmp = fcmp nnan ninf olt fp128 %a, %b48 %cond = select i1 %cmp, fp128 %a, fp128 %b49 ret fp128 %cond50}51 52declare fp128 @llvm.maxnum.f128(fp128, fp128)53define dso_local fp128 @testq_intrinsic_maxnum(fp128 %a, fp128 %b) local_unnamed_addr {54; CHECK-LABEL: testq_intrinsic_maxnum:55; CHECK: # %bb.0: # %entry56; CHECK-NEXT: xsmaxcqp v2, v2, v357; CHECK-NEXT: blr58entry:59 %0 = tail call fast fp128 @llvm.maxnum.f128(fp128 %a, fp128 %b)60 ret fp128 %061}62 63declare fp128 @llvm.minnum.f128(fp128, fp128)64define dso_local fp128 @testq_intrinsic_minnum(fp128 %a, fp128 %b) local_unnamed_addr {65; CHECK-LABEL: testq_intrinsic_minnum:66; CHECK: # %bb.0: # %entry67; CHECK-NEXT: xsmincqp v2, v2, v368; CHECK-NEXT: blr69entry:70 %0 = tail call fast fp128 @llvm.minnum.f128(fp128 %a, fp128 %b)71 ret fp128 %072}73 74define fp128 @olt_sel(fp128 %a, fp128 %b) {75; CHECK-LABEL: olt_sel:76; CHECK: # %bb.0: # %entry77; CHECK-NEXT: plxv vs36, .LCPI6_0@PCREL(0), 178; CHECK-NEXT: xscmpuqp cr0, v2, v479; CHECK-NEXT: blt cr0, .LBB6_280; CHECK-NEXT: # %bb.1: # %entry81; CHECK-NEXT: vmr v3, v482; CHECK-NEXT: .LBB6_2: # %entry83; CHECK-NEXT: vmr v2, v384; CHECK-NEXT: blr85entry:86 %0 = fcmp fast olt fp128 %a, 0xL0000000000000000000000000000000087 %1 = select i1 %0, fp128 %b, fp128 0xL0000000000000000000000000000000088 ret fp128 %189}90