120 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mattr=+vsx -mcpu=pwr8 < %s | \3; RUN: FileCheck %s --implicit-check-not lxvd2x --implicit-check-not lfs4; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mattr=-altivec -mcpu=pwr8 -mattr=-vsx < %s | \5; RUN: FileCheck %s --check-prefix=CHECK-NVSXALT --implicit-check-not xxlxor \6; RUN: --implicit-check-not vxor7 8define signext i32 @t1(float %x) local_unnamed_addr #0 {9; CHECK-LABEL: t1:10; CHECK: # %bb.0: # %entry11; CHECK-NEXT: xxlxor 0, 0, 012; CHECK-NEXT: li 3, 1113; CHECK-NEXT: li 4, 4314; CHECK-NEXT: fcmpu 0, 1, 015; CHECK-NEXT: iselgt 3, 4, 316; CHECK-NEXT: blr17;18; CHECK-NVSXALT-LABEL: t1:19; CHECK-NVSXALT: # %bb.0: # %entry20; CHECK-NVSXALT-NEXT: addis 3, 2, .LCPI0_0@toc@ha21; CHECK-NVSXALT-NEXT: li 4, 4322; CHECK-NVSXALT-NEXT: lfs 0, .LCPI0_0@toc@l(3)23; CHECK-NVSXALT-NEXT: li 3, 1124; CHECK-NVSXALT-NEXT: fcmpu 0, 1, 025; CHECK-NVSXALT-NEXT: iselgt 3, 4, 326; CHECK-NVSXALT-NEXT: blr27entry:28 %cmp = fcmp ogt float %x, 0.000000e+0029 %tmp = select i1 %cmp, i32 43, i32 1130 ret i32 %tmp31 32}33 34define signext i32 @t2(double %x) local_unnamed_addr #0 {35; CHECK-LABEL: t2:36; CHECK: # %bb.0: # %entry37; CHECK-NEXT: xxlxor 0, 0, 038; CHECK-NEXT: li 3, 1139; CHECK-NEXT: li 4, 4340; CHECK-NEXT: xscmpudp 0, 1, 041; CHECK-NEXT: iselgt 3, 4, 342; CHECK-NEXT: blr43;44; CHECK-NVSXALT-LABEL: t2:45; CHECK-NVSXALT: # %bb.0: # %entry46; CHECK-NVSXALT-NEXT: addis 3, 2, .LCPI1_0@toc@ha47; CHECK-NVSXALT-NEXT: li 4, 4348; CHECK-NVSXALT-NEXT: lfs 0, .LCPI1_0@toc@l(3)49; CHECK-NVSXALT-NEXT: li 3, 1150; CHECK-NVSXALT-NEXT: fcmpu 0, 1, 051; CHECK-NVSXALT-NEXT: iselgt 3, 4, 352; CHECK-NVSXALT-NEXT: blr53entry:54 %cmp = fcmp ogt double %x, 0.000000e+0055 %tmp = select i1 %cmp, i32 43, i32 1156 ret i32 %tmp57 58}59 60define signext i32 @t3(ppc_fp128 %x) local_unnamed_addr #0 {61; CHECK-LABEL: t3:62; CHECK: # %bb.0: # %entry63; CHECK-NEXT: xxlxor 0, 0, 064; CHECK-NEXT: li 3, 1165; CHECK-NEXT: li 4, 4366; CHECK-NEXT: fcmpu 0, 2, 067; CHECK-NEXT: fcmpu 1, 1, 068; CHECK-NEXT: crand 20, 6, 169; CHECK-NEXT: cror 20, 5, 2070; CHECK-NEXT: isel 3, 4, 3, 2071; CHECK-NEXT: blr72;73; CHECK-NVSXALT-LABEL: t3:74; CHECK-NVSXALT: # %bb.0: # %entry75; CHECK-NVSXALT-NEXT: addis 3, 2, .LCPI2_0@toc@ha76; CHECK-NVSXALT-NEXT: li 4, 4377; CHECK-NVSXALT-NEXT: lfs 0, .LCPI2_0@toc@l(3)78; CHECK-NVSXALT-NEXT: li 3, 1179; CHECK-NVSXALT-NEXT: fcmpu 0, 2, 080; CHECK-NVSXALT-NEXT: fcmpu 1, 1, 081; CHECK-NVSXALT-NEXT: crand 20, 6, 182; CHECK-NVSXALT-NEXT: cror 20, 5, 2083; CHECK-NVSXALT-NEXT: isel 3, 4, 3, 2084; CHECK-NVSXALT-NEXT: blr85entry:86 %cmp = fcmp ogt ppc_fp128 %x, 0xM0000000000000000000000000000000087 %tmp = select i1 %cmp, i32 43, i32 1188 ret i32 %tmp89 90}91 92define <2 x double> @t4() local_unnamed_addr #0 {93; CHECK-LABEL: t4:94; CHECK: # %bb.0:95; CHECK-NEXT: xxlxor 34, 34, 3496; CHECK-NEXT: blr97;98; CHECK-NVSXALT-LABEL: t4:99; CHECK-NVSXALT: # %bb.0:100; CHECK-NVSXALT-NEXT: addis 3, 2, .LCPI3_0@toc@ha101; CHECK-NVSXALT-NEXT: lfs 1, .LCPI3_0@toc@l(3)102; CHECK-NVSXALT-NEXT: fmr 2, 1103; CHECK-NVSXALT-NEXT: blr104 ret <2 x double> zeroinitializer105}106 107define <2 x i64> @t5() local_unnamed_addr #0 {108; CHECK-LABEL: t5:109; CHECK: # %bb.0:110; CHECK-NEXT: xxlxor 34, 34, 34111; CHECK-NEXT: blr112;113; CHECK-NVSXALT-LABEL: t5:114; CHECK-NVSXALT: # %bb.0:115; CHECK-NVSXALT-NEXT: li 3, 0116; CHECK-NVSXALT-NEXT: li 4, 0117; CHECK-NVSXALT-NEXT: blr118 ret <2 x i64> zeroinitializer119}120