1; RUN: rs2spirv_lit_driver.sh %s | FileCheck %s 2 3; CHECK: OpDecorate [[InVar1:%.*]] Binding 3 4; CHECK: OpDecorate [[OutVar1:%.*]] Binding 2 5 6; CHECK: OpDecorate [[InVar2:%.*]] Binding 3 7; CHECK: OpDecorate [[OutVar2:%.*]] Binding 2 8 9; CHECK: OpDecorate [[InVar3:%.*]] Binding 3 10; CHECK: OpDecorate [[OutVar3:%.*]] Binding 2 11 12; CHECK: OpDecorate [[InVar4:%.*]] Binding 3 13; CHECK: OpDecorate [[OutVar4:%.*]] Binding 2 14 15; CHECK: [[MemberTy1:%.*]] = OpTypeRuntimeArray %v4uint 16; CHECK: [[Struct1:%.*]] = OpTypeStruct [[MemberTy1]] 17; CHECK: [[PtrTy1:%.*]] = OpTypePointer Uniform [[Struct1]] 18; CHECK: [[InVar1]] = OpVariable [[PtrTy1]] 19 20; CHECK: [[OutMemberTy1:%.*]] = OpTypeRuntimeArray %v4uint 21; CHECK: [[OutStruct1:%.*]] = OpTypeStruct [[OutMemberTy1]] 22; CHECK: [[OutPtrTy1:%.*]] = OpTypePointer Uniform [[OutStruct1]] 23; CHECK: [[OutVar1]] = OpVariable [[OutPtrTy1]] 24 25; CHECK: [[MemberTy2:%.*]] = OpTypeRuntimeArray %v4uint 26; CHECK: [[Struct2:%.*]] = OpTypeStruct [[MemberTy2]] 27; CHECK: [[PtrTy2:%.*]] = OpTypePointer Uniform [[Struct2]] 28; CHECK: [[InVar2]] = OpVariable [[PtrTy2]] 29 30; CHECK: [[OutMemberTy2:%.*]] = OpTypeRuntimeArray %v4uint 31; CHECK: [[OutStruct2:%.*]] = OpTypeStruct [[OutMemberTy2]] 32; CHECK: [[OutPtrTy2:%.*]] = OpTypePointer Uniform [[OutStruct2]] 33; CHECK: [[OutVar2]] = OpVariable [[OutPtrTy2]] 34 35; CHECK: [[MemberTy3:%.*]] = OpTypeRuntimeArray %uint 36; CHECK: [[Struct3:%.*]] = OpTypeStruct [[MemberTy3]] 37; CHECK: [[PtrTy3:%.*]] = OpTypePointer Uniform [[Struct3]] 38; CHECK: [[InVar3]] = OpVariable [[PtrTy3]] 39 40; CHECK: [[OutMemberTy3:%.*]] = OpTypeRuntimeArray %uint 41; CHECK: [[OutStruct3:%.*]] = OpTypeStruct [[OutMemberTy3]] 42; CHECK: [[OutPtrTy3:%.*]] = OpTypePointer Uniform [[OutStruct3]] 43; CHECK: [[OutVar3]] = OpVariable [[OutPtrTy3]] 44 45; CHECK: [[MemberTy4:%.*]] = OpTypeRuntimeArray %uint 46; CHECK: [[Struct4:%.*]] = OpTypeStruct [[MemberTy4]] 47; CHECK: [[PtrTy4:%.*]] = OpTypePointer Uniform [[Struct4]] 48; CHECK: [[InVar4]] = OpVariable [[PtrTy4]] 49 50; CHECK: [[OutMemberTy4:%.*]] = OpTypeRuntimeArray %uint 51; CHECK: [[OutStruct4:%.*]] = OpTypeStruct [[OutMemberTy4]] 52; CHECK: [[OutPtrTy4:%.*]] = OpTypePointer Uniform [[OutStruct4]] 53; CHECK: [[OutVar4]] = OpVariable [[OutPtrTy4]] 54 55; // the RS the .rs from which this .ll is generated 56; #pragma version(1) 57; #pragma rs java_package_name(com.android.rs.test) 58 59; int4 RS_KERNEL increment4(int4 in) 60; { 61; return in + 1; 62; } 63 64; uint4 RS_KERNEL uincrement4(uint4 in) 65; { 66; return in + 1; 67; } 68 69; int RS_KERNEL increment(int in) 70; { 71; return in + 1; 72; } 73 74; unsigned RS_KERNEL uincrement(unsigned in) 75; { 76; return in + 1; 77; } 78 79 80target datalayout = "e-p:32:32-i64:64-v128:64:128-n32-S64" 81target triple = "armv7-none-linux-gnueabi" 82 83; Function Attrs: norecurse nounwind readnone 84define <4 x i32> @increment4(<4 x i32> %in) local_unnamed_addr #0 { 85entry: 86 %add = add <4 x i32> %in, <i32 1, i32 1, i32 1, i32 1> 87 ret <4 x i32> %add 88} 89 90; Function Attrs: norecurse nounwind readnone 91define <4 x i32> @uincrement4(<4 x i32> %in) local_unnamed_addr #0 { 92entry: 93 %add = add <4 x i32> %in, <i32 1, i32 1, i32 1, i32 1> 94 ret <4 x i32> %add 95} 96 97; Function Attrs: norecurse nounwind readnone 98define i32 @increment(i32 %in) local_unnamed_addr #0 { 99entry: 100 %add = add nsw i32 %in, 1 101 ret i32 %add 102} 103 104; Function Attrs: norecurse nounwind readnone 105define i32 @uincrement(i32 %in) local_unnamed_addr #0 { 106entry: 107 %add = add i32 %in, 1 108 ret i32 %add 109} 110 111attributes #0 = { norecurse nounwind readnone "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="0" "stackrealign" "unsafe-fp-math"="false" "use-soft-float"="false" } 112 113!llvm.module.flags = !{!0, !1} 114!llvm.ident = !{!2} 115!\23pragma = !{!3, !4} 116!\23rs_export_foreach_name = !{!5, !6, !7, !8, !9} 117!\23rs_export_foreach = !{!10, !11, !11, !11, !11} 118 119!0 = !{i32 1, !"wchar_size", i32 4} 120!1 = !{i32 1, !"min_enum_size", i32 4} 121!2 = !{!"Android clang version 3.8.275480 (based on LLVM 3.8.275480)"} 122!3 = !{!"version", !"1"} 123!4 = !{!"java_package_name", !"com.android.rs.test"} 124!5 = !{!"root"} 125!6 = !{!"increment4"} 126!7 = !{!"uincrement4"} 127!8 = !{!"increment"} 128!9 = !{!"uincrement"} 129!10 = !{!"0"} 130!11 = !{!"35"} 131