brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · ad45ac6 Raw
100 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -S -dxil-legalize -dxil-finalize-linkage -mtriple=dxil-pc-shadermodel6.3-library %s | FileCheck %s3 4define void @replace_float_memset_test() #0 {5; CHECK-LABEL: define void @replace_float_memset_test(6; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {7; CHECK-NEXT:    [[ACCUM_I_FLAT:%.*]] = alloca [2 x float], align 48; CHECK-NEXT:    [[GEP:%.*]] = getelementptr [2 x float], ptr [[ACCUM_I_FLAT]], i32 0, i32 09; CHECK-NEXT:    store float 0.000000e+00, ptr [[GEP]], align 410; CHECK-NEXT:    [[GEP1:%.*]] = getelementptr [2 x float], ptr [[ACCUM_I_FLAT]], i32 0, i32 111; CHECK-NEXT:    store float 0.000000e+00, ptr [[GEP1]], align 412; CHECK-NEXT:    ret void13;14  %accum.i.flat = alloca [2 x float], align 415  call void @llvm.memset.p0.i32(ptr nonnull align 4 dereferenceable(8) %accum.i.flat, i8 0, i32 8, i1 false)16  ret void17}18 19define void @replace_half_memset_test() #0 {20; CHECK-LABEL: define void @replace_half_memset_test(21; CHECK-SAME: ) #[[ATTR0]] {22; CHECK-NEXT:    [[ACCUM_I_FLAT:%.*]] = alloca [2 x half], align 423; CHECK-NEXT:    [[GEP:%.*]] = getelementptr [2 x half], ptr [[ACCUM_I_FLAT]], i32 0, i32 024; CHECK-NEXT:    store half 0xH0000, ptr [[GEP]], align 225; CHECK-NEXT:    [[GEP1:%.*]] = getelementptr [2 x half], ptr [[ACCUM_I_FLAT]], i32 0, i32 126; CHECK-NEXT:    store half 0xH0000, ptr [[GEP1]], align 227; CHECK-NEXT:    ret void28;29  %accum.i.flat = alloca [2 x half], align 430  call void @llvm.memset.p0.i32(ptr nonnull align 4 dereferenceable(8) %accum.i.flat, i8 0, i32 4, i1 false)31  ret void32}33 34define void @replace_double_memset_test() #0 {35; CHECK-LABEL: define void @replace_double_memset_test(36; CHECK-SAME: ) #[[ATTR0]] {37; CHECK-NEXT:    [[ACCUM_I_FLAT:%.*]] = alloca [2 x double], align 438; CHECK-NEXT:    [[GEP:%.*]] = getelementptr [2 x double], ptr [[ACCUM_I_FLAT]], i32 0, i32 039; CHECK-NEXT:    store double 0.000000e+00, ptr [[GEP]], align 840; CHECK-NEXT:    [[GEP1:%.*]] = getelementptr [2 x double], ptr [[ACCUM_I_FLAT]], i32 0, i32 141; CHECK-NEXT:    store double 0.000000e+00, ptr [[GEP1]], align 842; CHECK-NEXT:    ret void43;44  %accum.i.flat = alloca [2 x double], align 445  call void @llvm.memset.p0.i32(ptr nonnull align 4 dereferenceable(8) %accum.i.flat, i8 0, i32 16, i1 false)46  ret void47}48 49define void @replace_int16_memset_test() #0 {50; CHECK-LABEL: define void @replace_int16_memset_test(51; CHECK-SAME: ) #[[ATTR0]] {52; CHECK-NEXT:    [[CACHE_I:%.*]] = alloca [2 x i16], align 253; CHECK-NEXT:    [[GEP:%.*]] = getelementptr [2 x i16], ptr [[CACHE_I]], i32 0, i32 054; CHECK-NEXT:    store i16 0, ptr [[GEP]], align 255; CHECK-NEXT:    [[GEP1:%.*]] = getelementptr [2 x i16], ptr [[CACHE_I]], i32 0, i32 156; CHECK-NEXT:    store i16 0, ptr [[GEP1]], align 257; CHECK-NEXT:    ret void58;59  %cache.i = alloca [2 x i16], align 260  call void @llvm.memset.p0.i32(ptr nonnull align 2 dereferenceable(4) %cache.i, i8 0, i32 4, i1 false)61  ret void62}63 64define void @replace_int_memset_test() #0 {65; CHECK-LABEL: define void @replace_int_memset_test(66; CHECK-SAME: ) #[[ATTR0]] {67; CHECK-NEXT:    [[ACCUM_I_FLAT:%.*]] = alloca [1 x i32], align 468; CHECK-NEXT:    [[GEP:%.*]] = getelementptr [1 x i32], ptr [[ACCUM_I_FLAT]], i32 0, i32 069; CHECK-NEXT:    store i32 0, ptr [[GEP]], align 470; CHECK-NEXT:    ret void71;72  %accum.i.flat = alloca [1 x i32], align 473  call void @llvm.memset.p0.i32(ptr nonnull align 4 dereferenceable(8) %accum.i.flat, i8 0, i32 4, i1 false)74  ret void75}76 77define void @replace_int_memset_to_var_test() #0 {78; CHECK-LABEL: define void @replace_int_memset_to_var_test(79; CHECK-SAME: ) #[[ATTR0]] {80; CHECK-NEXT:    [[ACCUM_I_FLAT:%.*]] = alloca [1 x i32], align 481; CHECK-NEXT:    [[I:%.*]] = alloca i32, align 482; CHECK-NEXT:    store i32 1, ptr [[I]], align 483; CHECK-NEXT:    [[I8_LOAD:%.*]] = load i32, ptr [[I]], align 484; CHECK-NEXT:    [[GEP:%.*]] = getelementptr [1 x i32], ptr [[ACCUM_I_FLAT]], i32 0, i32 085; CHECK-NEXT:    store i32 [[I8_LOAD]], ptr [[GEP]], align 486; CHECK-NEXT:    ret void87;88  %accum.i.flat = alloca [1 x i32], align 489  %i = alloca i8, align 490  store i8 1, ptr %i91  %i8.load = load i8, ptr %i92  call void @llvm.memset.p0.i32(ptr nonnull align 4 dereferenceable(8) %accum.i.flat, i8 %i8.load, i32 4, i1 false)93  ret void94}95 96attributes #0 = {"hlsl.export"}97 98 99declare void @llvm.memset.p0.i32(ptr writeonly captures(none), i8, i32, i1 immarg)100