78 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64 < %s | FileCheck %s3 4; All tests are doing unordered vector comparisons on vectors larger than a5; Neon vector.6 7define i1 @unordered_floating_point_compare_on_v8f32(<8 x float> %a_vec) {8; CHECK-LABEL: unordered_floating_point_compare_on_v8f32:9; CHECK: // %bb.0:10; CHECK-NEXT: fcmgt v1.4s, v1.4s, #0.011; CHECK-NEXT: fcmgt v0.4s, v0.4s, #0.012; CHECK-NEXT: mov w8, #1 // =0x113; CHECK-NEXT: uzp1 v0.8h, v0.8h, v1.8h14; CHECK-NEXT: mvn v0.16b, v0.16b15; CHECK-NEXT: umaxv h0, v0.8h16; CHECK-NEXT: fmov w9, s017; CHECK-NEXT: bic w0, w8, w918; CHECK-NEXT: ret19 %a_cmp = fcmp ule <8 x float> %a_vec, zeroinitializer20 %cmp_result = bitcast <8 x i1> %a_cmp to i821 %all_zero = icmp eq i8 %cmp_result, 022 ret i1 %all_zero23}24 25define i1 @unordered_floating_point_compare_on_v16f32(<16 x float> %a_vec) {26; CHECK-LABEL: unordered_floating_point_compare_on_v16f32:27; CHECK: // %bb.0:28; CHECK-NEXT: fcmgt v3.4s, v3.4s, #0.029; CHECK-NEXT: fcmgt v2.4s, v2.4s, #0.030; CHECK-NEXT: mov w9, #1 // =0x131; CHECK-NEXT: fcmgt v1.4s, v1.4s, #0.032; CHECK-NEXT: fcmgt v0.4s, v0.4s, #0.033; CHECK-NEXT: uzp1 v2.8h, v2.8h, v3.8h34; CHECK-NEXT: uzp1 v0.8h, v0.8h, v1.8h35; CHECK-NEXT: uzp1 v0.16b, v0.16b, v2.16b36; CHECK-NEXT: mvn v0.16b, v0.16b37; CHECK-NEXT: umaxv b0, v0.16b38; CHECK-NEXT: fmov w8, s039; CHECK-NEXT: bic w0, w9, w840; CHECK-NEXT: ret41 %a_cmp = fcmp ule <16 x float> %a_vec, zeroinitializer42 %cmp_result = bitcast <16 x i1> %a_cmp to i1643 %all_zero = icmp eq i16 %cmp_result, 044 ret i1 %all_zero45}46 47define i1 @unordered_floating_point_compare_on_v32f32(<32 x float> %a_vec) {48; CHECK-LABEL: unordered_floating_point_compare_on_v32f32:49; CHECK: // %bb.0:50; CHECK-NEXT: fcmgt v3.4s, v3.4s, #0.051; CHECK-NEXT: fcmgt v2.4s, v2.4s, #0.052; CHECK-NEXT: mov w9, #1 // =0x153; CHECK-NEXT: fcmgt v1.4s, v1.4s, #0.054; CHECK-NEXT: fcmgt v0.4s, v0.4s, #0.055; CHECK-NEXT: fcmgt v7.4s, v7.4s, #0.056; CHECK-NEXT: fcmgt v6.4s, v6.4s, #0.057; CHECK-NEXT: fcmgt v5.4s, v5.4s, #0.058; CHECK-NEXT: fcmgt v4.4s, v4.4s, #0.059; CHECK-NEXT: uzp1 v2.8h, v2.8h, v3.8h60; CHECK-NEXT: uzp1 v0.8h, v0.8h, v1.8h61; CHECK-NEXT: uzp1 v1.8h, v6.8h, v7.8h62; CHECK-NEXT: uzp1 v3.8h, v4.8h, v5.8h63; CHECK-NEXT: uzp1 v0.16b, v0.16b, v2.16b64; CHECK-NEXT: uzp1 v1.16b, v3.16b, v1.16b65; CHECK-NEXT: mvn v0.16b, v0.16b66; CHECK-NEXT: orn v0.16b, v0.16b, v1.16b67; CHECK-NEXT: shl v0.16b, v0.16b, #768; CHECK-NEXT: cmlt v0.16b, v0.16b, #069; CHECK-NEXT: umaxv b0, v0.16b70; CHECK-NEXT: fmov w8, s071; CHECK-NEXT: bic w0, w9, w872; CHECK-NEXT: ret73 %a_cmp = fcmp ule <32 x float> %a_vec, zeroinitializer74 %cmp_result = bitcast <32 x i1> %a_cmp to i3275 %all_zero = icmp eq i32 %cmp_result, 076 ret i1 %all_zero77}78