brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · eb190c4 Raw
80 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -mtriple=aarch64-none-linux-gnu | FileCheck %s3 4; and can be eliminated5define i32 @test_call_known_max_range() #0 {6; CHECK-LABEL: test_call_known_max_range:7; CHECK:       // %bb.0: // %entry8; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill9; CHECK-NEXT:    bl foo10; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload11; CHECK-NEXT:    ret12entry:13  %id = tail call i32 @foo(), !range !0, !noundef !{}14  %and = and i32 %id, 102315  ret i32 %and16}17 18define i32 @test_call_known_trunc_1_bit_range() #0 {19; CHECK-LABEL: test_call_known_trunc_1_bit_range:20; CHECK:       // %bb.0: // %entry21; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill22; CHECK-NEXT:    bl foo23; CHECK-NEXT:    and w0, w0, #0x1ff24; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload25; CHECK-NEXT:    ret26entry:27  %id = tail call i32 @foo(), !range !0, !noundef !{}28  %and = and i32 %id, 51129  ret i32 %and30}31 32define i32 @test_call_known_max_range_m1() #0 {33; CHECK-LABEL: test_call_known_max_range_m1:34; CHECK:       // %bb.0: // %entry35; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill36; CHECK-NEXT:    bl foo37; CHECK-NEXT:    and w0, w0, #0xff38; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload39; CHECK-NEXT:    ret40entry:41  %id = tail call i32 @foo(), !range !1, !noundef !{}42  %and = and i32 %id, 25543  ret i32 %and44}45 46; and can be eliminated47define i32 @test_call_known_max_range_attr() #0 {48; CHECK-LABEL: test_call_known_max_range_attr:49; CHECK:       // %bb.0: // %entry50; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill51; CHECK-NEXT:    bl foo52; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload53; CHECK-NEXT:    ret54entry:55  %id = tail call noundef range(i32 0, 1024) i32 @foo()56  %and = and i32 %id, 102357  ret i32 %and58}59 60define i32 @test_call_known_max_range_attr_no_noundef() #0 {61; CHECK-LABEL: test_call_known_max_range_attr_no_noundef:62; CHECK:       // %bb.0: // %entry63; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill64; CHECK-NEXT:    bl foo65; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload66; CHECK-NEXT:    ret67entry:68  %id = tail call range(i32 0, 1024) i32 @foo()69  %and = and i32 %id, 102370  ret i32 %and71}72 73declare i32 @foo()74 75attributes #0 = { norecurse nounwind }76attributes #1 = { nounwind readnone }77 78!0 = !{i32 0, i32 1024}79!1 = !{i32 0, i32 1023}80