1*4a8f2f2eSQiu Chaofan; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 2*4a8f2f2eSQiu Chaofan; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr9 < %s | FileCheck %s 3*4a8f2f2eSQiu Chaofan 4*4a8f2f2eSQiu Chaofandefine fp128 @f128_minimum(fp128 %a, fp128 %b) { 5*4a8f2f2eSQiu Chaofan; CHECK-LABEL: f128_minimum: 6*4a8f2f2eSQiu Chaofan; CHECK: # %bb.0: # %entry 7*4a8f2f2eSQiu Chaofan; CHECK-NEXT: xscmpuqp 0, 2, 3 8*4a8f2f2eSQiu Chaofan; CHECK-NEXT: vmr 4, 2 9*4a8f2f2eSQiu Chaofan; CHECK-NEXT: bge 0, .LBB0_8 10*4a8f2f2eSQiu Chaofan; CHECK-NEXT: # %bb.1: # %entry 11*4a8f2f2eSQiu Chaofan; CHECK-NEXT: bun 0, .LBB0_9 12*4a8f2f2eSQiu Chaofan; CHECK-NEXT: .LBB0_2: # %entry 13*4a8f2f2eSQiu Chaofan; CHECK-NEXT: xststdcqp 0, 2, 4 14*4a8f2f2eSQiu Chaofan; CHECK-NEXT: bc 4, 2, .LBB0_10 15*4a8f2f2eSQiu Chaofan; CHECK-NEXT: .LBB0_3: # %entry 16*4a8f2f2eSQiu Chaofan; CHECK-NEXT: xststdcqp 0, 3, 4 17*4a8f2f2eSQiu Chaofan; CHECK-NEXT: bc 12, 2, .LBB0_5 18*4a8f2f2eSQiu Chaofan; CHECK-NEXT: .LBB0_4: # %entry 19*4a8f2f2eSQiu Chaofan; CHECK-NEXT: vmr 3, 2 20*4a8f2f2eSQiu Chaofan; CHECK-NEXT: .LBB0_5: # %entry 21*4a8f2f2eSQiu Chaofan; CHECK-NEXT: addis 3, 2, .LCPI0_1@toc@ha 22*4a8f2f2eSQiu Chaofan; CHECK-NEXT: addi 3, 3, .LCPI0_1@toc@l 23*4a8f2f2eSQiu Chaofan; CHECK-NEXT: lxv 34, 0(3) 24*4a8f2f2eSQiu Chaofan; CHECK-NEXT: xscmpuqp 0, 4, 2 25*4a8f2f2eSQiu Chaofan; CHECK-NEXT: beq 0, .LBB0_7 26*4a8f2f2eSQiu Chaofan; CHECK-NEXT: # %bb.6: # %entry 27*4a8f2f2eSQiu Chaofan; CHECK-NEXT: vmr 3, 4 28*4a8f2f2eSQiu Chaofan; CHECK-NEXT: .LBB0_7: # %entry 29*4a8f2f2eSQiu Chaofan; CHECK-NEXT: vmr 2, 3 30*4a8f2f2eSQiu Chaofan; CHECK-NEXT: blr 31*4a8f2f2eSQiu Chaofan; CHECK-NEXT: .LBB0_8: # %entry 32*4a8f2f2eSQiu Chaofan; CHECK-NEXT: vmr 4, 3 33*4a8f2f2eSQiu Chaofan; CHECK-NEXT: bnu 0, .LBB0_2 34*4a8f2f2eSQiu Chaofan; CHECK-NEXT: .LBB0_9: 35*4a8f2f2eSQiu Chaofan; CHECK-NEXT: addis 3, 2, .LCPI0_0@toc@ha 36*4a8f2f2eSQiu Chaofan; CHECK-NEXT: addi 3, 3, .LCPI0_0@toc@l 37*4a8f2f2eSQiu Chaofan; CHECK-NEXT: lxv 36, 0(3) 38*4a8f2f2eSQiu Chaofan; CHECK-NEXT: xststdcqp 0, 2, 4 39*4a8f2f2eSQiu Chaofan; CHECK-NEXT: bc 12, 2, .LBB0_3 40*4a8f2f2eSQiu Chaofan; CHECK-NEXT: .LBB0_10: # %entry 41*4a8f2f2eSQiu Chaofan; CHECK-NEXT: vmr 2, 4 42*4a8f2f2eSQiu Chaofan; CHECK-NEXT: xststdcqp 0, 3, 4 43*4a8f2f2eSQiu Chaofan; CHECK-NEXT: bc 4, 2, .LBB0_4 44*4a8f2f2eSQiu Chaofan; CHECK-NEXT: b .LBB0_5 45*4a8f2f2eSQiu Chaofanentry: 46*4a8f2f2eSQiu Chaofan %m = call fp128 @llvm.minimum.f128(fp128 %a, fp128 %b) 47*4a8f2f2eSQiu Chaofan ret fp128 %m 48*4a8f2f2eSQiu Chaofan} 49*4a8f2f2eSQiu Chaofan 50*4a8f2f2eSQiu Chaofandefine fp128 @f128_maximum(fp128 %a, fp128 %b) { 51*4a8f2f2eSQiu Chaofan; CHECK-LABEL: f128_maximum: 52*4a8f2f2eSQiu Chaofan; CHECK: # %bb.0: # %entry 53*4a8f2f2eSQiu Chaofan; CHECK-NEXT: xscmpuqp 0, 2, 3 54*4a8f2f2eSQiu Chaofan; CHECK-NEXT: vmr 4, 2 55*4a8f2f2eSQiu Chaofan; CHECK-NEXT: ble 0, .LBB1_8 56*4a8f2f2eSQiu Chaofan; CHECK-NEXT: # %bb.1: # %entry 57*4a8f2f2eSQiu Chaofan; CHECK-NEXT: bun 0, .LBB1_9 58*4a8f2f2eSQiu Chaofan; CHECK-NEXT: .LBB1_2: # %entry 59*4a8f2f2eSQiu Chaofan; CHECK-NEXT: xststdcqp 0, 2, 8 60*4a8f2f2eSQiu Chaofan; CHECK-NEXT: bc 4, 2, .LBB1_10 61*4a8f2f2eSQiu Chaofan; CHECK-NEXT: .LBB1_3: # %entry 62*4a8f2f2eSQiu Chaofan; CHECK-NEXT: xststdcqp 0, 3, 8 63*4a8f2f2eSQiu Chaofan; CHECK-NEXT: bc 12, 2, .LBB1_5 64*4a8f2f2eSQiu Chaofan; CHECK-NEXT: .LBB1_4: # %entry 65*4a8f2f2eSQiu Chaofan; CHECK-NEXT: vmr 3, 2 66*4a8f2f2eSQiu Chaofan; CHECK-NEXT: .LBB1_5: # %entry 67*4a8f2f2eSQiu Chaofan; CHECK-NEXT: addis 3, 2, .LCPI1_1@toc@ha 68*4a8f2f2eSQiu Chaofan; CHECK-NEXT: addi 3, 3, .LCPI1_1@toc@l 69*4a8f2f2eSQiu Chaofan; CHECK-NEXT: lxv 34, 0(3) 70*4a8f2f2eSQiu Chaofan; CHECK-NEXT: xscmpuqp 0, 4, 2 71*4a8f2f2eSQiu Chaofan; CHECK-NEXT: beq 0, .LBB1_7 72*4a8f2f2eSQiu Chaofan; CHECK-NEXT: # %bb.6: # %entry 73*4a8f2f2eSQiu Chaofan; CHECK-NEXT: vmr 3, 4 74*4a8f2f2eSQiu Chaofan; CHECK-NEXT: .LBB1_7: # %entry 75*4a8f2f2eSQiu Chaofan; CHECK-NEXT: vmr 2, 3 76*4a8f2f2eSQiu Chaofan; CHECK-NEXT: blr 77*4a8f2f2eSQiu Chaofan; CHECK-NEXT: .LBB1_8: # %entry 78*4a8f2f2eSQiu Chaofan; CHECK-NEXT: vmr 4, 3 79*4a8f2f2eSQiu Chaofan; CHECK-NEXT: bnu 0, .LBB1_2 80*4a8f2f2eSQiu Chaofan; CHECK-NEXT: .LBB1_9: 81*4a8f2f2eSQiu Chaofan; CHECK-NEXT: addis 3, 2, .LCPI1_0@toc@ha 82*4a8f2f2eSQiu Chaofan; CHECK-NEXT: addi 3, 3, .LCPI1_0@toc@l 83*4a8f2f2eSQiu Chaofan; CHECK-NEXT: lxv 36, 0(3) 84*4a8f2f2eSQiu Chaofan; CHECK-NEXT: xststdcqp 0, 2, 8 85*4a8f2f2eSQiu Chaofan; CHECK-NEXT: bc 12, 2, .LBB1_3 86*4a8f2f2eSQiu Chaofan; CHECK-NEXT: .LBB1_10: # %entry 87*4a8f2f2eSQiu Chaofan; CHECK-NEXT: vmr 2, 4 88*4a8f2f2eSQiu Chaofan; CHECK-NEXT: xststdcqp 0, 3, 8 89*4a8f2f2eSQiu Chaofan; CHECK-NEXT: bc 4, 2, .LBB1_4 90*4a8f2f2eSQiu Chaofan; CHECK-NEXT: b .LBB1_5 91*4a8f2f2eSQiu Chaofanentry: 92*4a8f2f2eSQiu Chaofan %m = call fp128 @llvm.maximum.f128(fp128 %a, fp128 %b) 93*4a8f2f2eSQiu Chaofan ret fp128 %m 94*4a8f2f2eSQiu Chaofan} 95*4a8f2f2eSQiu Chaofan 96*4a8f2f2eSQiu Chaofandeclare fp128 @llvm.minimum.f128(fp128, fp128) 97*4a8f2f2eSQiu Chaofandeclare fp128 @llvm.maximum.f128(fp128, fp128) 98