brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · 4dd2a89 Raw
112 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 32; RUN: llc < %s -mtriple=aarch64 | FileCheck %s --check-prefixes=CHECK,CHECK-SD3; RUN: llc < %s -mtriple=aarch64 -global-isel | FileCheck %s --check-prefixes=CHECK,CHECK-GI4 5define i1 @load_bv_v4i8(i1 zeroext %a) {6; CHECK-LABEL: load_bv_v4i8:7; CHECK:       // %bb.0:8; CHECK-NEXT:    ret9  %b = zext i1 %a to i3210  %c = icmp eq i32 %b, 111  ret i1 %c12}13 14define noundef i1 @logger(i32 noundef %logLevel, ptr %ea, ptr %pll) {15; CHECK-SD-LABEL: logger:16; CHECK-SD:       // %bb.0: // %entry17; CHECK-SD-NEXT:    ldr w8, [x2]18; CHECK-SD-NEXT:    cmp w8, w019; CHECK-SD-NEXT:    b.ls .LBB1_220; CHECK-SD-NEXT:  // %bb.1:21; CHECK-SD-NEXT:    mov w0, wzr22; CHECK-SD-NEXT:    ret23; CHECK-SD-NEXT:  .LBB1_2: // %land.rhs24; CHECK-SD-NEXT:    ldr x8, [x1]25; CHECK-SD-NEXT:    ldrb w0, [x8]26; CHECK-SD-NEXT:    ret27;28; CHECK-GI-LABEL: logger:29; CHECK-GI:       // %bb.0: // %entry30; CHECK-GI-NEXT:    ldr w8, [x2]31; CHECK-GI-NEXT:    cmp w8, w032; CHECK-GI-NEXT:    mov w0, wzr33; CHECK-GI-NEXT:    b.hi .LBB1_234; CHECK-GI-NEXT:  // %bb.1: // %land.rhs35; CHECK-GI-NEXT:    ldr x8, [x1]36; CHECK-GI-NEXT:    ldrb w0, [x8]37; CHECK-GI-NEXT:  .LBB1_2: // %land.end38; CHECK-GI-NEXT:    ret39entry:40  %0 = load i32, ptr %pll, align 441  %cmp.not = icmp ugt i32 %0, %logLevel42  br i1 %cmp.not, label %land.end, label %land.rhs43 44land.rhs:                                         ; preds = %entry45  %1 = load ptr, ptr %ea, align 846  %2 = load i8, ptr %1, align 1, !range !14, !noundef !1547  %tobool.i = icmp ne i8 %2, 048  br label %land.end49 50land.end:                                         ; preds = %land.rhs, %entry51  %3 = phi i1 [ false, %entry ], [ %tobool.i, %land.rhs ]52  ret i1 %353}54!14 = !{i8 0, i8 2}55!15 = !{}56 57 58declare i64 @llvm.ctlz.i64(i64 %in, i1)59define i1 @lshr_ctlz_undef_cmpeq_one_i64(i64 %in) {60; CHECK-SD-LABEL: lshr_ctlz_undef_cmpeq_one_i64:61; CHECK-SD:       // %bb.0:62; CHECK-SD-NEXT:    clz x8, x063; CHECK-SD-NEXT:    lsr x0, x8, #664; CHECK-SD-NEXT:    // kill: def $w0 killed $w0 killed $x065; CHECK-SD-NEXT:    ret66;67; CHECK-GI-LABEL: lshr_ctlz_undef_cmpeq_one_i64:68; CHECK-GI:       // %bb.0:69; CHECK-GI-NEXT:    clz x8, x070; CHECK-GI-NEXT:    lsr w0, w8, #671; CHECK-GI-NEXT:    ret72  %ctlz = call i64 @llvm.ctlz.i64(i64 %in, i1 -1)73  %lshr = lshr i64 %ctlz, 674  %icmp = icmp eq i64 %lshr, 175  ret i1 %icmp76}77 78define i32 @PR17487(i1 %tobool) {79; CHECK-SD-LABEL: PR17487:80; CHECK-SD:       // %bb.0:81; CHECK-SD-NEXT:    dup v0.2s, w082; CHECK-SD-NEXT:    mov w8, #1 // =0x183; CHECK-SD-NEXT:    dup v1.2d, x884; CHECK-SD-NEXT:    ushll v0.2d, v0.2s, #085; CHECK-SD-NEXT:    bic v0.16b, v1.16b, v0.16b86; CHECK-SD-NEXT:    mov x8, v0.d[1]87; CHECK-SD-NEXT:    cmp x8, #188; CHECK-SD-NEXT:    cset w0, ne89; CHECK-SD-NEXT:    ret90;91; CHECK-GI-LABEL: PR17487:92; CHECK-GI:       // %bb.0:93; CHECK-GI-NEXT:    // kill: def $w0 killed $w0 def $x094; CHECK-GI-NEXT:    mov v0.d[1], x095; CHECK-GI-NEXT:    adrp x8, .LCPI3_096; CHECK-GI-NEXT:    ldr q1, [x8, :lo12:.LCPI3_0]97; CHECK-GI-NEXT:    bic v0.16b, v1.16b, v0.16b98; CHECK-GI-NEXT:    mov d0, v0.d[1]99; CHECK-GI-NEXT:    fmov x8, d0100; CHECK-GI-NEXT:    cmp x8, #1101; CHECK-GI-NEXT:    cset w0, ne102; CHECK-GI-NEXT:    ret103  %tmp = insertelement <2 x i1> undef, i1 %tobool, i32 1104  %tmp1 = zext <2 x i1> %tmp to <2 x i64>105  %tmp2 = xor <2 x i64> %tmp1, <i64 1, i64 1>106  %tmp3 = extractelement <2 x i64> %tmp2, i32 1107  %add = add nsw i64 0, %tmp3108  %cmp6 = icmp ne i64 %add, 1109  %conv7 = zext i1 %cmp6 to i32110  ret i32 %conv7111}112