brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · cae0f12 Raw
57 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes=inline < %s | FileCheck %s3 4; Test interaction of simplification during cloning with insertion of scoped5; noalias metadata.6 7define <2 x i8> @callee1(ptr %ptr1, ptr noalias %ptr2, <2 x i1> %mask, <2 x i8> %passthru) {8; CHECK-LABEL: @callee1(9; CHECK-NEXT:    [[RET:%.*]] = call <2 x i8> @llvm.masked.load.v2i8.p0(ptr align 1 [[PTR1:%.*]], <2 x i1> [[MASK:%.*]], <2 x i8> [[PASSTHRU:%.*]])10; CHECK-NEXT:    store <2 x i8> zeroinitializer, ptr [[PTR2:%.*]], align 211; CHECK-NEXT:    ret <2 x i8> [[RET]]12;13  %ret = call <2 x i8> @llvm.masked.load.v2i8(ptr %ptr1, i32 1, <2 x i1> %mask, <2 x i8> %passthru)14  store <2 x i8> zeroinitializer, ptr %ptr215  ret <2 x i8> %ret16}17 18; The load should not have !noalias.19define void @caller1(ptr %ptr1, ptr %ptr2) {20; CHECK-LABEL: @caller1(21; CHECK-NEXT:    [[PASSTHRU:%.*]] = load <2 x i8>, ptr [[PTR2:%.*]], align 222; CHECK-NEXT:    call void @llvm.experimental.noalias.scope.decl(metadata [[META0:![0-9]+]])23; CHECK-NEXT:    store <2 x i8> zeroinitializer, ptr [[PTR2]], align 2, !alias.scope [[META0]]24; CHECK-NEXT:    ret void25;26  %passthru = load <2 x i8>, ptr %ptr227  call <2 x i8> @callee1(ptr %ptr1, ptr %ptr2, <2 x i1> zeroinitializer, <2 x i8> %passthru)28  ret void29}30 31define <2 x i8> @callee2(ptr %ptr1, ptr noalias %ptr2, <2 x i1> %mask) {32; CHECK-LABEL: @callee2(33; CHECK-NEXT:    [[PASSTHRU:%.*]] = load <2 x i8>, ptr [[PTR2:%.*]], align 234; CHECK-NEXT:    [[RET:%.*]] = call <2 x i8> @llvm.masked.load.v2i8.p0(ptr align 1 [[PTR1:%.*]], <2 x i1> [[MASK:%.*]], <2 x i8> [[PASSTHRU]])35; CHECK-NEXT:    store <2 x i8> zeroinitializer, ptr [[PTR2]], align 236; CHECK-NEXT:    ret <2 x i8> [[RET]]37;38  %passthru = load <2 x i8>, ptr %ptr239  %ret = call <2 x i8> @llvm.masked.load.v2i8(ptr %ptr1, i32 1, <2 x i1> %mask, <2 x i8> %passthru)40  store <2 x i8> zeroinitializer, ptr %ptr241  ret <2 x i8> %ret42}43 44; The load should not have !noalias.45define void @caller2(ptr %ptr1, ptr %ptr2) {46; CHECK-LABEL: @caller2(47; CHECK-NEXT:    call void @llvm.experimental.noalias.scope.decl(metadata [[META3:![0-9]+]])48; CHECK-NEXT:    [[PASSTHRU_I:%.*]] = load <2 x i8>, ptr [[PTR2:%.*]], align 2, !alias.scope [[META3]]49; CHECK-NEXT:    store <2 x i8> zeroinitializer, ptr [[PTR2]], align 2, !alias.scope [[META3]]50; CHECK-NEXT:    ret void51;52  call <2 x i8> @callee2(ptr %ptr1, ptr %ptr2, <2 x i1> zeroinitializer)53  ret void54}55 56declare <2 x i8> @llvm.masked.load.v2i8(ptr, i32, <2 x i1>, <2 x i8>)57