From 04f0de6d64f0b127a59633b314b85588c49f6edc Mon Sep 17 00:00:00 2001 From: Jim Blandy Date: Tue, 24 Dec 2024 11:56:33 -0800 Subject: [PATCH] [naga] Add some tests to in/abstract-types-var.wgsl. Fill out a few more cases for variable type inference and automatic conversions of initializers. --- naga/tests/in/abstract-types-var.wgsl | 8 +- naga/tests/out/msl/abstract-types-var.msl | 4 + naga/tests/out/spv/abstract-types-var.spvasm | 331 ++++++++++--------- naga/tests/out/wgsl/abstract-types-var.wgsl | 11 +- 4 files changed, 186 insertions(+), 168 deletions(-) diff --git a/naga/tests/in/abstract-types-var.wgsl b/naga/tests/in/abstract-types-var.wgsl index c573f73d57..9ef92bff05 100644 --- a/naga/tests/in/abstract-types-var.wgsl +++ b/naga/tests/in/abstract-types-var.wgsl @@ -53,6 +53,7 @@ var ivfs_af = vec2(1.0); var iafafaf = array(1.0, 2.0); var iafaiai = array(1, 2); +var iaipaiai = array(1, 2); var iafpafaf = array(1.0, 2.0); var iafpaiaf = array(1, 2.0); var iafpafai = array(1.0, 2); @@ -93,13 +94,16 @@ fn all_constant_arguments() { var xai_iai: array = array(1i, 2); var xaiai_i: array = array(1, 2i); - // Ideally these would infer the var type from the initializer, - // but we don't support that yet. var xaipaiai: array = array(1, 2); var xafpaiai: array = array(1, 2); var xafpaiaf: array = array(1, 2.0); var xafpafai: array = array(1.0, 2); var xafpafaf: array = array(1.0, 2.0); + + var iaipaiai = array(1, 2); + var iafpaiaf = array(1, 2.0); + var iafpafai = array(1.0, 2); + var iafpafaf = array(1.0, 2.0); } fn mixed_constant_and_runtime_arguments() { diff --git a/naga/tests/out/msl/abstract-types-var.msl b/naga/tests/out/msl/abstract-types-var.msl index 7d5623469b..498d4585c9 100644 --- a/naga/tests/out/msl/abstract-types-var.msl +++ b/naga/tests/out/msl/abstract-types-var.msl @@ -46,6 +46,10 @@ void all_constant_arguments( type_7 xafpaiaf = type_7 {1.0, 2.0}; type_7 xafpafai = type_7 {1.0, 2.0}; type_7 xafpafaf = type_7 {1.0, 2.0}; + type_8 iaipaiai = type_8 {1, 2}; + type_7 iafpaiaf = type_7 {1.0, 2.0}; + type_7 iafpafai = type_7 {1.0, 2.0}; + type_7 iafpafaf = type_7 {1.0, 2.0}; } void mixed_constant_and_runtime_arguments( diff --git a/naga/tests/out/spv/abstract-types-var.spvasm b/naga/tests/out/spv/abstract-types-var.spvasm index 59dba569cd..2ca86a9649 100644 --- a/naga/tests/out/spv/abstract-types-var.spvasm +++ b/naga/tests/out/spv/abstract-types-var.spvasm @@ -1,7 +1,7 @@ ; SPIR-V ; Version: 1.1 ; Generator: rspirv -; Bound: 220 +; Bound: 225 OpCapability Shader OpCapability Linkage %1 = OpExtInstImport "GLSL.std.450" @@ -84,171 +84,176 @@ OpDecorate %12 ArrayStride 4 %75 = OpVariable %45 Private %34 %76 = OpVariable %63 Private %37 %77 = OpVariable %63 Private %37 -%78 = OpVariable %63 Private %37 +%78 = OpVariable %66 Private %39 %79 = OpVariable %63 Private %37 %80 = OpVariable %63 Private %37 -%83 = OpTypeFunction %2 -%85 = OpTypePointer Function %4 -%87 = OpTypePointer Function %6 -%89 = OpTypePointer Function %8 -%95 = OpTypePointer Function %9 -%111 = OpTypePointer Function %10 -%116 = OpTypePointer Function %12 -%127 = OpTypePointer Function %5 -%128 = OpConstantNull %5 -%130 = OpTypePointer Function %3 -%131 = OpConstantNull %3 -%133 = OpTypePointer Function %7 -%134 = OpConstantNull %7 -%136 = OpConstantNull %6 -%138 = OpConstantNull %6 -%140 = OpConstantNull %6 -%142 = OpConstantNull %6 -%144 = OpConstantNull %9 -%146 = OpConstantNull %9 -%148 = OpConstantNull %9 -%150 = OpConstantNull %9 -%152 = OpConstantNull %10 -%154 = OpConstantNull %10 -%156 = OpConstantNull %10 -%158 = OpConstantNull %10 -%160 = OpConstantNull %12 -%162 = OpConstantNull %12 -%164 = OpConstantNull %10 -%166 = OpConstantNull %10 -%168 = OpConstantNull %10 -%170 = OpConstantNull %10 -%172 = OpConstantNull %12 -%174 = OpConstantNull %12 -%82 = OpFunction %2 None %83 -%81 = OpLabel -%120 = OpVariable %111 Function %37 -%117 = OpVariable %116 Function %39 -%113 = OpVariable %111 Function %37 -%109 = OpVariable %89 Function %34 -%106 = OpVariable %85 Function %33 -%103 = OpVariable %95 Function %31 -%100 = OpVariable %95 Function %31 -%97 = OpVariable %95 Function %31 -%93 = OpVariable %87 Function %24 -%90 = OpVariable %87 Function %24 -%84 = OpVariable %85 Function %15 -%121 = OpVariable %111 Function %37 -%118 = OpVariable %116 Function %39 -%114 = OpVariable %111 Function %37 -%110 = OpVariable %111 Function %37 -%107 = OpVariable %87 Function %36 -%104 = OpVariable %85 Function %33 -%101 = OpVariable %95 Function %31 -%98 = OpVariable %95 Function %31 -%94 = OpVariable %95 Function %31 -%91 = OpVariable %87 Function %24 -%86 = OpVariable %87 Function %18 -%122 = OpVariable %111 Function %37 -%119 = OpVariable %111 Function %37 -%115 = OpVariable %116 Function %39 -%112 = OpVariable %111 Function %37 -%108 = OpVariable %89 Function %34 -%105 = OpVariable %89 Function %34 -%102 = OpVariable %95 Function %31 -%99 = OpVariable %95 Function %31 -%96 = OpVariable %95 Function %31 -%92 = OpVariable %87 Function %24 -%88 = OpVariable %89 Function %21 -OpBranch %123 -%123 = OpLabel +%81 = OpVariable %63 Private %37 +%84 = OpTypeFunction %2 +%86 = OpTypePointer Function %4 +%88 = OpTypePointer Function %6 +%90 = OpTypePointer Function %8 +%96 = OpTypePointer Function %9 +%112 = OpTypePointer Function %10 +%117 = OpTypePointer Function %12 +%132 = OpTypePointer Function %5 +%133 = OpConstantNull %5 +%135 = OpTypePointer Function %3 +%136 = OpConstantNull %3 +%138 = OpTypePointer Function %7 +%139 = OpConstantNull %7 +%141 = OpConstantNull %6 +%143 = OpConstantNull %6 +%145 = OpConstantNull %6 +%147 = OpConstantNull %6 +%149 = OpConstantNull %9 +%151 = OpConstantNull %9 +%153 = OpConstantNull %9 +%155 = OpConstantNull %9 +%157 = OpConstantNull %10 +%159 = OpConstantNull %10 +%161 = OpConstantNull %10 +%163 = OpConstantNull %10 +%165 = OpConstantNull %12 +%167 = OpConstantNull %12 +%169 = OpConstantNull %10 +%171 = OpConstantNull %10 +%173 = OpConstantNull %10 +%175 = OpConstantNull %10 +%177 = OpConstantNull %12 +%179 = OpConstantNull %12 +%83 = OpFunction %2 None %84 +%82 = OpLabel +%127 = OpVariable %112 Function %37 +%124 = OpVariable %117 Function %39 +%121 = OpVariable %112 Function %37 +%118 = OpVariable %117 Function %39 +%114 = OpVariable %112 Function %37 +%110 = OpVariable %90 Function %34 +%107 = OpVariable %86 Function %33 +%104 = OpVariable %96 Function %31 +%101 = OpVariable %96 Function %31 +%98 = OpVariable %96 Function %31 +%94 = OpVariable %88 Function %24 +%91 = OpVariable %88 Function %24 +%85 = OpVariable %86 Function %15 +%125 = OpVariable %112 Function %37 +%122 = OpVariable %112 Function %37 +%119 = OpVariable %117 Function %39 +%115 = OpVariable %112 Function %37 +%111 = OpVariable %112 Function %37 +%108 = OpVariable %88 Function %36 +%105 = OpVariable %86 Function %33 +%102 = OpVariable %96 Function %31 +%99 = OpVariable %96 Function %31 +%95 = OpVariable %96 Function %31 +%92 = OpVariable %88 Function %24 +%87 = OpVariable %88 Function %18 +%126 = OpVariable %112 Function %37 +%123 = OpVariable %112 Function %37 +%120 = OpVariable %112 Function %37 +%116 = OpVariable %117 Function %39 +%113 = OpVariable %112 Function %37 +%109 = OpVariable %90 Function %34 +%106 = OpVariable %90 Function %34 +%103 = OpVariable %96 Function %31 +%100 = OpVariable %96 Function %31 +%97 = OpVariable %96 Function %31 +%93 = OpVariable %88 Function %24 +%89 = OpVariable %90 Function %21 +OpBranch %128 +%128 = OpLabel OpReturn OpFunctionEnd -%125 = OpFunction %2 None %83 -%124 = OpLabel -%173 = OpVariable %116 Function %174 -%167 = OpVariable %111 Function %168 -%161 = OpVariable %116 Function %162 -%155 = OpVariable %111 Function %156 -%149 = OpVariable %95 Function %150 -%143 = OpVariable %95 Function %144 -%137 = OpVariable %87 Function %138 -%129 = OpVariable %130 Function %131 -%171 = OpVariable %116 Function %172 -%165 = OpVariable %111 Function %166 -%159 = OpVariable %116 Function %160 -%153 = OpVariable %111 Function %154 -%147 = OpVariable %95 Function %148 -%141 = OpVariable %87 Function %142 -%135 = OpVariable %87 Function %136 -%126 = OpVariable %127 Function %128 -%169 = OpVariable %111 Function %170 -%163 = OpVariable %111 Function %164 -%157 = OpVariable %111 Function %158 -%151 = OpVariable %111 Function %152 -%145 = OpVariable %95 Function %146 -%139 = OpVariable %87 Function %140 -%132 = OpVariable %133 Function %134 -OpBranch %175 -%175 = OpLabel -%176 = OpLoad %5 %126 -%177 = OpCompositeConstruct %6 %176 %23 -OpStore %135 %177 -%178 = OpLoad %5 %126 -%179 = OpCompositeConstruct %6 %22 %178 -OpStore %137 %179 -%180 = OpLoad %5 %126 -%181 = OpCompositeConstruct %6 %180 %23 -OpStore %139 %181 -%182 = OpLoad %5 %126 -%183 = OpCompositeConstruct %6 %22 %182 -OpStore %141 %183 -%184 = OpLoad %7 %132 -%185 = OpCompositeConstruct %8 %184 %26 -%186 = OpCompositeConstruct %9 %185 %30 -OpStore %143 %186 -%187 = OpLoad %7 %132 -%188 = OpCompositeConstruct %8 %25 %187 -%189 = OpCompositeConstruct %9 %188 %30 -OpStore %145 %189 -%190 = OpLoad %7 %132 -%191 = OpCompositeConstruct %8 %190 %29 -%192 = OpCompositeConstruct %9 %27 %191 -OpStore %147 %192 -%193 = OpLoad %7 %132 -%194 = OpCompositeConstruct %8 %28 %193 -%195 = OpCompositeConstruct %9 %27 %194 -OpStore %149 %195 -%196 = OpLoad %7 %132 -%197 = OpCompositeConstruct %10 %196 %26 -OpStore %151 %197 -%198 = OpLoad %7 %132 -%199 = OpCompositeConstruct %10 %25 %198 -OpStore %153 %199 -%200 = OpLoad %7 %132 -%201 = OpCompositeConstruct %10 %200 %26 -OpStore %155 %201 -%202 = OpLoad %7 %132 -%203 = OpCompositeConstruct %10 %25 %202 -OpStore %157 %203 -%204 = OpLoad %3 %129 -%205 = OpCompositeConstruct %12 %204 %38 -OpStore %159 %205 -%206 = OpLoad %3 %129 -%207 = OpCompositeConstruct %12 %32 %206 -OpStore %161 %207 -%208 = OpLoad %7 %132 -%209 = OpCompositeConstruct %10 %208 %26 -OpStore %163 %209 -%210 = OpLoad %7 %132 -%211 = OpCompositeConstruct %10 %25 %210 -OpStore %165 %211 -%212 = OpLoad %7 %132 -%213 = OpCompositeConstruct %10 %212 %26 -OpStore %167 %213 -%214 = OpLoad %7 %132 -%215 = OpCompositeConstruct %10 %25 %214 -OpStore %169 %215 -%216 = OpLoad %3 %129 -%217 = OpCompositeConstruct %12 %216 %38 -OpStore %171 %217 -%218 = OpLoad %3 %129 -%219 = OpCompositeConstruct %12 %32 %218 -OpStore %173 %219 +%130 = OpFunction %2 None %84 +%129 = OpLabel +%178 = OpVariable %117 Function %179 +%172 = OpVariable %112 Function %173 +%166 = OpVariable %117 Function %167 +%160 = OpVariable %112 Function %161 +%154 = OpVariable %96 Function %155 +%148 = OpVariable %96 Function %149 +%142 = OpVariable %88 Function %143 +%134 = OpVariable %135 Function %136 +%176 = OpVariable %117 Function %177 +%170 = OpVariable %112 Function %171 +%164 = OpVariable %117 Function %165 +%158 = OpVariable %112 Function %159 +%152 = OpVariable %96 Function %153 +%146 = OpVariable %88 Function %147 +%140 = OpVariable %88 Function %141 +%131 = OpVariable %132 Function %133 +%174 = OpVariable %112 Function %175 +%168 = OpVariable %112 Function %169 +%162 = OpVariable %112 Function %163 +%156 = OpVariable %112 Function %157 +%150 = OpVariable %96 Function %151 +%144 = OpVariable %88 Function %145 +%137 = OpVariable %138 Function %139 +OpBranch %180 +%180 = OpLabel +%181 = OpLoad %5 %131 +%182 = OpCompositeConstruct %6 %181 %23 +OpStore %140 %182 +%183 = OpLoad %5 %131 +%184 = OpCompositeConstruct %6 %22 %183 +OpStore %142 %184 +%185 = OpLoad %5 %131 +%186 = OpCompositeConstruct %6 %185 %23 +OpStore %144 %186 +%187 = OpLoad %5 %131 +%188 = OpCompositeConstruct %6 %22 %187 +OpStore %146 %188 +%189 = OpLoad %7 %137 +%190 = OpCompositeConstruct %8 %189 %26 +%191 = OpCompositeConstruct %9 %190 %30 +OpStore %148 %191 +%192 = OpLoad %7 %137 +%193 = OpCompositeConstruct %8 %25 %192 +%194 = OpCompositeConstruct %9 %193 %30 +OpStore %150 %194 +%195 = OpLoad %7 %137 +%196 = OpCompositeConstruct %8 %195 %29 +%197 = OpCompositeConstruct %9 %27 %196 +OpStore %152 %197 +%198 = OpLoad %7 %137 +%199 = OpCompositeConstruct %8 %28 %198 +%200 = OpCompositeConstruct %9 %27 %199 +OpStore %154 %200 +%201 = OpLoad %7 %137 +%202 = OpCompositeConstruct %10 %201 %26 +OpStore %156 %202 +%203 = OpLoad %7 %137 +%204 = OpCompositeConstruct %10 %25 %203 +OpStore %158 %204 +%205 = OpLoad %7 %137 +%206 = OpCompositeConstruct %10 %205 %26 +OpStore %160 %206 +%207 = OpLoad %7 %137 +%208 = OpCompositeConstruct %10 %25 %207 +OpStore %162 %208 +%209 = OpLoad %3 %134 +%210 = OpCompositeConstruct %12 %209 %38 +OpStore %164 %210 +%211 = OpLoad %3 %134 +%212 = OpCompositeConstruct %12 %32 %211 +OpStore %166 %212 +%213 = OpLoad %7 %137 +%214 = OpCompositeConstruct %10 %213 %26 +OpStore %168 %214 +%215 = OpLoad %7 %137 +%216 = OpCompositeConstruct %10 %25 %215 +OpStore %170 %216 +%217 = OpLoad %7 %137 +%218 = OpCompositeConstruct %10 %217 %26 +OpStore %172 %218 +%219 = OpLoad %7 %137 +%220 = OpCompositeConstruct %10 %25 %219 +OpStore %174 %220 +%221 = OpLoad %3 %134 +%222 = OpCompositeConstruct %12 %221 %38 +OpStore %176 %222 +%223 = OpLoad %3 %134 +%224 = OpCompositeConstruct %12 %32 %223 +OpStore %178 %224 OpReturn OpFunctionEnd \ No newline at end of file diff --git a/naga/tests/out/wgsl/abstract-types-var.wgsl b/naga/tests/out/wgsl/abstract-types-var.wgsl index 596595ba44..41cbc371cc 100644 --- a/naga/tests/out/wgsl/abstract-types-var.wgsl +++ b/naga/tests/out/wgsl/abstract-types-var.wgsl @@ -30,9 +30,10 @@ var ivfs_ai: vec2 = vec2(1f); var ivfs_af: vec2 = vec2(1f); var iafafaf: array = array(1f, 2f); var iafaiai: array = array(1f, 2f); -var iafpafaf: array = array(1f, 2f); -var iafpaiaf: array = array(1f, 2f); -var iafpafai: array = array(1f, 2f); +var iaipaiai_1: array = array(1i, 2i); +var iafpafaf_1: array = array(1f, 2f); +var iafpaiaf_1: array = array(1f, 2f); +var iafpafai_1: array = array(1f, 2f); fn all_constant_arguments() { var xvipaiai: vec2 = vec2(42i, 43i); @@ -68,6 +69,10 @@ fn all_constant_arguments() { var xafpaiaf: array = array(1f, 2f); var xafpafai: array = array(1f, 2f); var xafpafaf: array = array(1f, 2f); + var iaipaiai: array = array(1i, 2i); + var iafpaiaf: array = array(1f, 2f); + var iafpafai: array = array(1f, 2f); + var iafpafaf: array = array(1f, 2f); }