brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.4 KiB · c0486c0 Raw
113 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=instcombine -S < %s | FileCheck %s3 4define float @matching_scalar(ptr dereferenceable(16) %p) {5; CHECK-LABEL: @matching_scalar(6; CHECK-NEXT:    [[R:%.*]] = load float, ptr [[P:%.*]], align 167; CHECK-NEXT:    ret float [[R]]8;9  %r = load float, ptr %p, align 1610  ret float %r11}12 13define i32 @nonmatching_scalar(ptr dereferenceable(16) %p) {14; CHECK-LABEL: @nonmatching_scalar(15; CHECK-NEXT:    [[R:%.*]] = load i32, ptr [[P:%.*]], align 1616; CHECK-NEXT:    ret i32 [[R]]17;18  %r = load i32, ptr %p, align 1619  ret i32 %r20}21 22define i64 @larger_scalar(ptr dereferenceable(16) %p) {23; CHECK-LABEL: @larger_scalar(24; CHECK-NEXT:    [[R:%.*]] = load i64, ptr [[P:%.*]], align 1625; CHECK-NEXT:    ret i64 [[R]]26;27  %r = load i64, ptr %p, align 1628  ret i64 %r29}30 31define i8 @smaller_scalar(ptr dereferenceable(16) %p) {32; CHECK-LABEL: @smaller_scalar(33; CHECK-NEXT:    [[R:%.*]] = load i8, ptr [[P:%.*]], align 1634; CHECK-NEXT:    ret i8 [[R]]35;36  %r = load i8, ptr %p, align 1637  ret i8 %r38}39 40define i8 @smaller_scalar_less_aligned(ptr dereferenceable(16) %p) {41; CHECK-LABEL: @smaller_scalar_less_aligned(42; CHECK-NEXT:    [[R:%.*]] = load i8, ptr [[P:%.*]], align 443; CHECK-NEXT:    ret i8 [[R]]44;45  %r = load i8, ptr %p, align 446  ret i8 %r47}48 49define float @matching_scalar_small_deref(ptr dereferenceable(15) %p) {50; CHECK-LABEL: @matching_scalar_small_deref(51; CHECK-NEXT:    [[R:%.*]] = load float, ptr [[P:%.*]], align 1652; CHECK-NEXT:    ret float [[R]]53;54  %r = load float, ptr %p, align 1655  ret float %r56}57 58define float @matching_scalar_smallest_deref(ptr dereferenceable(1) %p) {59; CHECK-LABEL: @matching_scalar_smallest_deref(60; CHECK-NEXT:    [[R:%.*]] = load float, ptr [[P:%.*]], align 1661; CHECK-NEXT:    ret float [[R]]62;63  %r = load float, ptr %p, align 1664  ret float %r65}66 67define float @matching_scalar_smallest_deref_or_null(ptr dereferenceable_or_null(1) %p) {68; CHECK-LABEL: @matching_scalar_smallest_deref_or_null(69; CHECK-NEXT:    [[R:%.*]] = load float, ptr [[P:%.*]], align 1670; CHECK-NEXT:    ret float [[R]]71;72  %r = load float, ptr %p, align 1673  ret float %r74}75 76define float @matching_scalar_smallest_deref_addrspace(ptr addrspace(4) dereferenceable(1) %p) {77; CHECK-LABEL: @matching_scalar_smallest_deref_addrspace(78; CHECK-NEXT:    [[R:%.*]] = load float, ptr addrspace(4) [[P:%.*]], align 1679; CHECK-NEXT:    ret float [[R]]80;81  %r = load float, ptr addrspace(4) %p, align 1682  ret float %r83}84 85; A null pointer can't be assumed inbounds in a non-default address space.86 87define float @matching_scalar_smallest_deref_or_null_addrspace(ptr addrspace(4) dereferenceable_or_null(1) %p) {88; CHECK-LABEL: @matching_scalar_smallest_deref_or_null_addrspace(89; CHECK-NEXT:    [[R:%.*]] = load float, ptr addrspace(4) [[P:%.*]], align 1690; CHECK-NEXT:    ret float [[R]]91;92  %r = load float, ptr addrspace(4) %p, align 1693  ret float %r94}95 96define float @matching_scalar_volatile(ptr dereferenceable(16) %p) {97; CHECK-LABEL: @matching_scalar_volatile(98; CHECK-NEXT:    [[R:%.*]] = load volatile float, ptr [[P:%.*]], align 1699; CHECK-NEXT:    ret float [[R]]100;101  %r = load volatile float, ptr %p, align 16102  ret float %r103}104 105define float @nonvector(ptr dereferenceable(16) %p) {106; CHECK-LABEL: @nonvector(107; CHECK-NEXT:    [[R:%.*]] = load float, ptr [[P:%.*]], align 16108; CHECK-NEXT:    ret float [[R]]109;110  %r = load float, ptr %p, align 16111  ret float %r112}113