DirectVariableAccess: Avoid creating access with no indices
Check if the chain is empty before creating an access instruction.
Bug: 370743660
Change-Id: Ie9430d31e17d6d64e0580de7e613d37225fa2964
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/211096
Commit-Queue: James Price <jrprice@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
diff --git a/src/tint/lang/core/ir/transform/direct_variable_access.cc b/src/tint/lang/core/ir/transform/direct_variable_access.cc
index 9ed4f09..24a396a 100644
--- a/src/tint/lang/core/ir/transform/direct_variable_access.cc
+++ b/src/tint/lang/core/ir/transform/direct_variable_access.cc
@@ -596,10 +596,15 @@
auto* access = b.Access(ty.u32(), indices_param, u32(index_index++));
return access->Result(0);
});
- auto* access = b.Access(old_param->Type(), root_ptr, std::move(chain));
+
+ auto* new_ptr = root_ptr;
+ if (!chain.IsEmpty()) {
+ new_ptr =
+ b.Access(old_param->Type(), root_ptr, std::move(chain))->Result(0);
+ }
// Replace the now removed parameter value with the access instruction
- old_param->ReplaceAllUsesWith(access->Result(0));
+ old_param->ReplaceAllUsesWith(new_ptr);
} else if (HandleNeedsTransforming(old_param)) {
auto* load = b.Load(root_ptr);
diff --git a/src/tint/lang/core/ir/transform/direct_variable_access_test.cc b/src/tint/lang/core/ir/transform/direct_variable_access_test.cc
index 60dcedd..3cca4ac 100644
--- a/src/tint/lang/core/ir/transform/direct_variable_access_test.cc
+++ b/src/tint/lang/core/ir/transform/direct_variable_access_test.cc
@@ -837,14 +837,13 @@
%a = func(%pre:i32, %post:i32):i32 {
$B2: {
- %5:ptr<uniform, i32, read> = access %U
- %6:i32 = load %5
- ret %6
+ %5:i32 = load %U
+ ret %5
}
}
%b = func():void {
$B3: {
- %8:i32 = call %a, 10i, 20i
+ %7:i32 = call %a, 10i, 20i
ret
}
}
@@ -2703,14 +2702,13 @@
%a = func(%pre:i32, %post:i32):i32 {
$B2: {
- %5:ptr<private, i32, read_write> = access %P
- %6:i32 = load %5
- ret %6
+ %5:i32 = load %P
+ ret %5
}
}
%b = func():void {
$B3: {
- %8:i32 = call %a, 10i, 20i
+ %7:i32 = call %a, 10i, 20i
ret
}
}
@@ -2774,14 +2772,13 @@
%a = func(%pre:i32, %post:i32):void {
$B2: {
- %5:ptr<private, i32, read_write> = access %P
- store %5, 42i
+ store %P, 42i
ret
}
}
%b = func():void {
$B3: {
- %7:void = call %a, 10i, 20i
+ %6:void = call %a, 10i, 20i
ret
}
}
@@ -3168,33 +3165,32 @@
%a = func(%pre:i32, %post:i32):i32 {
$B2: {
- %7:ptr<private, i32, read_write> = access %Pi
- %8:i32 = load %7
- ret %8
+ %7:i32 = load %Pi
+ ret %7
}
}
%a_1 = func(%pre_1:i32, %post_1:i32):i32 { # %a_1: 'a', %pre_1: 'pre', %post_1: 'post'
$B3: {
- %12:ptr<private, i32, read_write> = access %Ps, 0u
- %13:i32 = load %12
- ret %13
+ %11:ptr<private, i32, read_write> = access %Ps, 0u
+ %12:i32 = load %11
+ ret %12
}
}
%a_2 = func(%pre_2:i32, %p_indices:array<u32, 1>, %post_2:i32):i32 { # %a_2: 'a', %pre_2: 'pre', %post_2: 'post'
$B4: {
- %18:u32 = access %p_indices, 0u
- %19:ptr<private, i32, read_write> = access %Pa, %18
- %20:i32 = load %19
- ret %20
+ %17:u32 = access %p_indices, 0u
+ %18:ptr<private, i32, read_write> = access %Pa, %17
+ %19:i32 = load %18
+ ret %19
}
}
%b = func():void {
$B5: {
- %22:i32 = call %a, 10i, 20i
- %23:i32 = call %a_1, 30i, 40i
- %24:u32 = convert 2i
- %25:array<u32, 1> = construct %24
- %26:i32 = call %a_2, 50i, %25, 60i
+ %21:i32 = call %a, 10i, 20i
+ %22:i32 = call %a_1, 30i, 40i
+ %23:u32 = convert 2i
+ %24:array<u32, 1> = construct %23
+ %25:i32 = call %a_2, 50i, %24, 60i
ret
}
}
@@ -4058,15 +4054,14 @@
auto* expect = R"(
%a = func(%pre:i32, %p_root:ptr<function, i32, read_write>, %post:i32):i32 {
$B1: {
- %5:ptr<function, i32, read_write> = access %p_root
- %6:i32 = load %5
- ret %6
+ %5:i32 = load %p_root
+ ret %5
}
}
%b = func():void {
$B2: {
%F:ptr<function, i32, read_write> = var
- %9:i32 = call %a, 10i, %F, 20i
+ %8:i32 = call %a, 10i, %F, 20i
ret
}
}
@@ -4118,15 +4113,14 @@
auto* expect = R"(
%a = func(%pre:i32, %p_root:ptr<function, i32, read_write>, %post:i32):void {
$B1: {
- %5:ptr<function, i32, read_write> = access %p_root
- store %5, 42i
+ store %p_root, 42i
ret
}
}
%b = func():void {
$B2: {
%F:ptr<function, i32, read_write> = var
- %8:void = call %a, 10i, %F, 20i
+ %7:void = call %a, 10i, %F, 20i
ret
}
}
@@ -4351,24 +4345,23 @@
%a = func(%pre:i32, %p_root:ptr<function, i32, read_write>, %post:i32):i32 {
$B1: {
- %5:ptr<function, i32, read_write> = access %p_root
- %6:i32 = load %5
- ret %6
+ %5:i32 = load %p_root
+ ret %5
}
}
%a_1 = func(%pre_1:i32, %p_root_1:ptr<function, str, read_write>, %post_1:i32):i32 { # %a_1: 'a', %pre_1: 'pre', %p_root_1: 'p_root', %post_1: 'post'
$B2: {
- %11:ptr<function, i32, read_write> = access %p_root_1, 0u
- %12:i32 = load %11
- ret %12
+ %10:ptr<function, i32, read_write> = access %p_root_1, 0u
+ %11:i32 = load %10
+ ret %11
}
}
%a_2 = func(%pre_2:i32, %p_root_2:ptr<function, array<i32, 4>, read_write>, %p_indices:array<u32, 1>, %post_2:i32):i32 { # %a_2: 'a', %pre_2: 'pre', %p_root_2: 'p_root', %post_2: 'post'
$B3: {
- %18:u32 = access %p_indices, 0u
- %19:ptr<function, i32, read_write> = access %p_root_2, %18
- %20:i32 = load %19
- ret %20
+ %17:u32 = access %p_indices, 0u
+ %18:ptr<function, i32, read_write> = access %p_root_2, %17
+ %19:i32 = load %18
+ ret %19
}
}
%b = func():void {
@@ -4376,11 +4369,11 @@
%Fi:ptr<function, i32, read_write> = var
%Fs:ptr<function, str, read_write> = var
%Fa:ptr<function, array<i32, 4>, read_write> = var
- %25:i32 = call %a, 10i, %Fi, 20i
- %26:i32 = call %a_1, 30i, %Fs, 40i
- %27:u32 = convert 2i
- %28:array<u32, 1> = construct %27
- %29:i32 = call %a_2, 50i, %Fa, %28, 60i
+ %24:i32 = call %a, 10i, %Fi, 20i
+ %25:i32 = call %a_1, 30i, %Fs, 40i
+ %26:u32 = convert 2i
+ %27:array<u32, 1> = construct %26
+ %28:i32 = call %a_2, 50i, %Fa, %27, 60i
ret
}
}
@@ -5808,14 +5801,13 @@
%len = func():u32 {
$B2: {
- %3:ptr<storage, array<f32>, read_write> = access %S
- %4:u32 = arrayLength %3
- ret %4
+ %3:u32 = arrayLength %S
+ ret %3
}
}
%b = func():void {
$B3: {
- %6:u32 = call %len
+ %5:u32 = call %len
ret
}
}
@@ -5875,14 +5867,13 @@
%load = func():i32 {
$B2: {
- %3:ptr<workgroup, atomic<i32>, read_write> = access %W
- %4:i32 = atomicLoad %3
- ret %4
+ %3:i32 = atomicLoad %W
+ ret %3
}
}
%b = func():void {
$B3: {
- %6:i32 = call %load
+ %5:i32 = call %load
ret
}
}
@@ -6155,95 +6146,92 @@
%fn_u = func():vec4<i32> {
$B2: {
- %14:ptr<uniform, vec4<i32>, read> = access %U
- %15:vec4<i32> = load %14
- ret %15
+ %14:vec4<i32> = load %U
+ ret %14
}
}
%fn_u_1 = func():vec4<i32> { # %fn_u_1: 'fn_u'
$B3: {
- %17:ptr<uniform, vec4<i32>, read> = access %U_str, 0u
- %18:vec4<i32> = load %17
- ret %18
+ %16:ptr<uniform, vec4<i32>, read> = access %U_str, 0u
+ %17:vec4<i32> = load %16
+ ret %17
}
}
%fn_u_2 = func(%p_indices:array<u32, 1>):vec4<i32> { # %fn_u_2: 'fn_u'
$B4: {
- %21:u32 = access %p_indices, 0u
- %22:ptr<uniform, vec4<i32>, read> = access %U_arr, %21
- %23:vec4<i32> = load %22
- ret %23
+ %20:u32 = access %p_indices, 0u
+ %21:ptr<uniform, vec4<i32>, read> = access %U_arr, %20
+ %22:vec4<i32> = load %21
+ ret %22
}
}
%fn_u_3 = func(%p_indices_1:array<u32, 2>):vec4<i32> { # %fn_u_3: 'fn_u', %p_indices_1: 'p_indices'
$B5: {
- %26:u32 = access %p_indices_1, 0u
- %27:u32 = access %p_indices_1, 1u
- %28:ptr<uniform, vec4<i32>, read> = access %U_arr_arr, %26, %27
- %29:vec4<i32> = load %28
- ret %29
+ %25:u32 = access %p_indices_1, 0u
+ %26:u32 = access %p_indices_1, 1u
+ %27:ptr<uniform, vec4<i32>, read> = access %U_arr_arr, %25, %26
+ %28:vec4<i32> = load %27
+ ret %28
}
}
%fn_s = func():vec4<i32> {
$B6: {
- %31:ptr<storage, vec4<i32>, read> = access %S
- %32:vec4<i32> = load %31
- ret %32
+ %30:vec4<i32> = load %S
+ ret %30
}
}
%fn_s_1 = func():vec4<i32> { # %fn_s_1: 'fn_s'
$B7: {
- %34:ptr<storage, vec4<i32>, read> = access %S_str, 0u
- %35:vec4<i32> = load %34
- ret %35
+ %32:ptr<storage, vec4<i32>, read> = access %S_str, 0u
+ %33:vec4<i32> = load %32
+ ret %33
}
}
%fn_s_2 = func(%p_indices_2:array<u32, 1>):vec4<i32> { # %fn_s_2: 'fn_s', %p_indices_2: 'p_indices'
$B8: {
- %38:u32 = access %p_indices_2, 0u
- %39:ptr<storage, vec4<i32>, read> = access %S_arr, %38
- %40:vec4<i32> = load %39
- ret %40
+ %36:u32 = access %p_indices_2, 0u
+ %37:ptr<storage, vec4<i32>, read> = access %S_arr, %36
+ %38:vec4<i32> = load %37
+ ret %38
}
}
%fn_s_3 = func(%p_indices_3:array<u32, 2>):vec4<i32> { # %fn_s_3: 'fn_s', %p_indices_3: 'p_indices'
$B9: {
- %43:u32 = access %p_indices_3, 0u
- %44:u32 = access %p_indices_3, 1u
- %45:ptr<storage, vec4<i32>, read> = access %S_arr_arr, %43, %44
- %46:vec4<i32> = load %45
- ret %46
+ %41:u32 = access %p_indices_3, 0u
+ %42:u32 = access %p_indices_3, 1u
+ %43:ptr<storage, vec4<i32>, read> = access %S_arr_arr, %41, %42
+ %44:vec4<i32> = load %43
+ ret %44
}
}
%fn_w = func():vec4<i32> {
$B10: {
- %48:ptr<workgroup, vec4<i32>, read_write> = access %W
- %49:vec4<i32> = load %48
- ret %49
+ %46:vec4<i32> = load %W
+ ret %46
}
}
%fn_w_1 = func():vec4<i32> { # %fn_w_1: 'fn_w'
$B11: {
- %51:ptr<workgroup, vec4<i32>, read_write> = access %W_str, 0u
- %52:vec4<i32> = load %51
- ret %52
+ %48:ptr<workgroup, vec4<i32>, read_write> = access %W_str, 0u
+ %49:vec4<i32> = load %48
+ ret %49
}
}
%fn_w_2 = func(%p_indices_4:array<u32, 1>):vec4<i32> { # %fn_w_2: 'fn_w', %p_indices_4: 'p_indices'
$B12: {
- %55:u32 = access %p_indices_4, 0u
- %56:ptr<workgroup, vec4<i32>, read_write> = access %W_arr, %55
- %57:vec4<i32> = load %56
- ret %57
+ %52:u32 = access %p_indices_4, 0u
+ %53:ptr<workgroup, vec4<i32>, read_write> = access %W_arr, %52
+ %54:vec4<i32> = load %53
+ ret %54
}
}
%fn_w_3 = func(%p_indices_5:array<u32, 2>):vec4<i32> { # %fn_w_3: 'fn_w', %p_indices_5: 'p_indices'
$B13: {
- %60:u32 = access %p_indices_5, 0u
- %61:u32 = access %p_indices_5, 1u
- %62:ptr<workgroup, vec4<i32>, read_write> = access %W_arr_arr, %60, %61
- %63:vec4<i32> = load %62
- ret %63
+ %57:u32 = access %p_indices_5, 0u
+ %58:u32 = access %p_indices_5, 1u
+ %59:ptr<workgroup, vec4<i32>, read_write> = access %W_arr_arr, %57, %58
+ %60:vec4<i32> = load %59
+ ret %60
}
}
%b = func():void {
@@ -6252,85 +6240,85 @@
%J:i32 = let 4i
%u:vec4<i32> = call %fn_u
%u_str:vec4<i32> = call %fn_u_1
- %69:u32 = convert 0i
+ %66:u32 = convert 0i
+ %67:array<u32, 1> = construct %66
+ %u_arr0:vec4<i32> = call %fn_u_2, %67
+ %69:u32 = convert 1i
%70:array<u32, 1> = construct %69
- %u_arr0:vec4<i32> = call %fn_u_2, %70
- %72:u32 = convert 1i
+ %u_arr1:vec4<i32> = call %fn_u_2, %70
+ %72:u32 = convert %I
%73:array<u32, 1> = construct %72
- %u_arr1:vec4<i32> = call %fn_u_2, %73
- %75:u32 = convert %I
- %76:array<u32, 1> = construct %75
- %u_arrI:vec4<i32> = call %fn_u_2, %76
- %78:u32 = convert 1i
- %79:u32 = convert 0i
- %80:array<u32, 2> = construct %78, %79
- %u_arr1_arr0:vec4<i32> = call %fn_u_3, %80
- %82:u32 = convert 2i
+ %u_arrI:vec4<i32> = call %fn_u_2, %73
+ %75:u32 = convert 1i
+ %76:u32 = convert 0i
+ %77:array<u32, 2> = construct %75, %76
+ %u_arr1_arr0:vec4<i32> = call %fn_u_3, %77
+ %79:u32 = convert 2i
+ %80:u32 = convert %I
+ %81:array<u32, 2> = construct %79, %80
+ %u_arr2_arrI:vec4<i32> = call %fn_u_3, %81
%83:u32 = convert %I
- %84:array<u32, 2> = construct %82, %83
- %u_arr2_arrI:vec4<i32> = call %fn_u_3, %84
- %86:u32 = convert %I
- %87:u32 = convert 2i
- %88:array<u32, 2> = construct %86, %87
- %u_arrI_arr2:vec4<i32> = call %fn_u_3, %88
- %90:u32 = convert %I
- %91:u32 = convert %J
- %92:array<u32, 2> = construct %90, %91
- %u_arrI_arrJ:vec4<i32> = call %fn_u_3, %92
+ %84:u32 = convert 2i
+ %85:array<u32, 2> = construct %83, %84
+ %u_arrI_arr2:vec4<i32> = call %fn_u_3, %85
+ %87:u32 = convert %I
+ %88:u32 = convert %J
+ %89:array<u32, 2> = construct %87, %88
+ %u_arrI_arrJ:vec4<i32> = call %fn_u_3, %89
%s:vec4<i32> = call %fn_s
%s_str:vec4<i32> = call %fn_s_1
- %96:u32 = convert 0i
+ %93:u32 = convert 0i
+ %94:array<u32, 1> = construct %93
+ %s_arr0:vec4<i32> = call %fn_s_2, %94
+ %96:u32 = convert 1i
%97:array<u32, 1> = construct %96
- %s_arr0:vec4<i32> = call %fn_s_2, %97
- %99:u32 = convert 1i
+ %s_arr1:vec4<i32> = call %fn_s_2, %97
+ %99:u32 = convert %I
%100:array<u32, 1> = construct %99
- %s_arr1:vec4<i32> = call %fn_s_2, %100
- %102:u32 = convert %I
- %103:array<u32, 1> = construct %102
- %s_arrI:vec4<i32> = call %fn_s_2, %103
- %105:u32 = convert 1i
- %106:u32 = convert 0i
- %107:array<u32, 2> = construct %105, %106
- %s_arr1_arr0:vec4<i32> = call %fn_s_3, %107
- %109:u32 = convert 2i
+ %s_arrI:vec4<i32> = call %fn_s_2, %100
+ %102:u32 = convert 1i
+ %103:u32 = convert 0i
+ %104:array<u32, 2> = construct %102, %103
+ %s_arr1_arr0:vec4<i32> = call %fn_s_3, %104
+ %106:u32 = convert 2i
+ %107:u32 = convert %I
+ %108:array<u32, 2> = construct %106, %107
+ %s_arr2_arrI:vec4<i32> = call %fn_s_3, %108
%110:u32 = convert %I
- %111:array<u32, 2> = construct %109, %110
- %s_arr2_arrI:vec4<i32> = call %fn_s_3, %111
- %113:u32 = convert %I
- %114:u32 = convert 2i
- %115:array<u32, 2> = construct %113, %114
- %s_arrI_arr2:vec4<i32> = call %fn_s_3, %115
- %117:u32 = convert %I
- %118:u32 = convert %J
- %119:array<u32, 2> = construct %117, %118
- %s_arrI_arrJ:vec4<i32> = call %fn_s_3, %119
+ %111:u32 = convert 2i
+ %112:array<u32, 2> = construct %110, %111
+ %s_arrI_arr2:vec4<i32> = call %fn_s_3, %112
+ %114:u32 = convert %I
+ %115:u32 = convert %J
+ %116:array<u32, 2> = construct %114, %115
+ %s_arrI_arrJ:vec4<i32> = call %fn_s_3, %116
%w:vec4<i32> = call %fn_w
%w_str:vec4<i32> = call %fn_w_1
- %123:u32 = convert 0i
+ %120:u32 = convert 0i
+ %121:array<u32, 1> = construct %120
+ %w_arr0:vec4<i32> = call %fn_w_2, %121
+ %123:u32 = convert 1i
%124:array<u32, 1> = construct %123
- %w_arr0:vec4<i32> = call %fn_w_2, %124
- %126:u32 = convert 1i
+ %w_arr1:vec4<i32> = call %fn_w_2, %124
+ %126:u32 = convert %I
%127:array<u32, 1> = construct %126
- %w_arr1:vec4<i32> = call %fn_w_2, %127
- %129:u32 = convert %I
- %130:array<u32, 1> = construct %129
- %w_arrI:vec4<i32> = call %fn_w_2, %130
- %132:u32 = convert 1i
- %133:u32 = convert 0i
- %134:array<u32, 2> = construct %132, %133
- %w_arr1_arr0:vec4<i32> = call %fn_w_3, %134
- %136:u32 = convert 2i
+ %w_arrI:vec4<i32> = call %fn_w_2, %127
+ %129:u32 = convert 1i
+ %130:u32 = convert 0i
+ %131:array<u32, 2> = construct %129, %130
+ %w_arr1_arr0:vec4<i32> = call %fn_w_3, %131
+ %133:u32 = convert 2i
+ %134:u32 = convert %I
+ %135:array<u32, 2> = construct %133, %134
+ %w_arr2_arrI:vec4<i32> = call %fn_w_3, %135
%137:u32 = convert %I
- %138:array<u32, 2> = construct %136, %137
- %w_arr2_arrI:vec4<i32> = call %fn_w_3, %138
- %140:u32 = convert %I
- %141:u32 = convert 2i
- %142:array<u32, 2> = construct %140, %141
- %w_arrI_arr2:vec4<i32> = call %fn_w_3, %142
- %144:u32 = convert %I
- %145:u32 = convert %J
- %146:array<u32, 2> = construct %144, %145
- %w_arrI_arrJ:vec4<i32> = call %fn_w_3, %146
+ %138:u32 = convert 2i
+ %139:array<u32, 2> = construct %137, %138
+ %w_arrI_arr2:vec4<i32> = call %fn_w_3, %139
+ %141:u32 = convert %I
+ %142:u32 = convert %J
+ %143:array<u32, 2> = construct %141, %142
+ %w_arrI_arrJ:vec4<i32> = call %fn_w_3, %143
ret
}
}
diff --git a/test/tint/access/ptr.wgsl.expected.spvasm b/test/tint/access/ptr.wgsl.expected.spvasm
index 06a417d..32031e4 100644
--- a/test/tint/access/ptr.wgsl.expected.spvasm
+++ b/test/tint/access/ptr.wgsl.expected.spvasm
@@ -1,10 +1,10 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 124
+; Bound: 121
; Schema: 0
OpCapability Shader
- %61 = OpExtInstImport "GLSL.std.450"
+ %58 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main" %main_local_invocation_index_Input
OpExecutionMode %main LocalSize 1 1 1
@@ -60,31 +60,31 @@
%17 = OpTypeFunction %int %_ptr_Function_int
%S = OpTypeStruct %int %int
%_ptr_Function_S = OpTypePointer Function %S
- %35 = OpTypeFunction %int %_ptr_Function_S
+ %33 = OpTypeFunction %int %_ptr_Function_S
%uint_0 = OpConstant %uint 0
%uint_1 = OpConstant %uint 1
%int_2 = OpConstant %int 2
%float = OpTypeFloat 32
%v3float = OpTypeVector %float 3
%_ptr_Function_v3float = OpTypePointer Function %v3float
- %55 = OpTypeFunction %int %_ptr_Function_v3float
+ %53 = OpTypeFunction %int %_ptr_Function_v3float
%_ptr_Function_float = OpTypePointer Function %float
- %70 = OpTypeFunction %int
+ %67 = OpTypeFunction %int
%uint_2 = OpConstant %uint 2
%void = OpTypeVoid
- %77 = OpTypeFunction %void %uint
+ %74 = OpTypeFunction %void %uint
%bool = OpTypeBool
%int_0 = OpConstant %int 0
%uint_264 = OpConstant %uint 264
- %89 = OpConstantNull %S
- %91 = OpConstantNull %v3float
+ %86 = OpConstantNull %S
+ %88 = OpConstantNull %v3float
%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
- %108 = OpTypeFunction %int %float
+ %105 = OpTypeFunction %int %float
%float_n2_14748365e_09 = OpConstant %float -2.14748365e+09
%int_n2147483648 = OpConstant %int -2147483648
%float_2_14748352e_09 = OpConstant %float 2.14748352e+09
%int_2147483647 = OpConstant %int 2147483647
- %120 = OpTypeFunction %void
+ %117 = OpTypeFunction %void
%accept_value = OpFunction %int None %12
%val = OpFunctionParameter %int
%13 = OpLabel
@@ -93,107 +93,104 @@
%accept_ptr_deref_call_func = OpFunction %int None %17
%val_root = OpFunctionParameter %_ptr_Function_int
%18 = OpLabel
- %19 = OpAccessChain %_ptr_Function_int %val_root
- %20 = OpLoad %int %19 None
- %21 = OpLoad %int %19 None
- %22 = OpFunctionCall %int %accept_value %21
- %23 = OpIAdd %int %20 %22
- OpReturnValue %23
+ %19 = OpLoad %int %val_root None
+ %20 = OpLoad %int %val_root None
+ %21 = OpFunctionCall %int %accept_value %20
+ %22 = OpIAdd %int %19 %21
+ OpReturnValue %22
OpFunctionEnd
%accept_ptr_deref_pass_through = OpFunction %int None %17
%val_root_0 = OpFunctionParameter %_ptr_Function_int
- %26 = OpLabel
- %27 = OpAccessChain %_ptr_Function_int %val_root_0
- %28 = OpLoad %int %27 None
- %29 = OpFunctionCall %int %accept_ptr_deref_call_func %val_root_0
- %30 = OpIAdd %int %28 %29
- OpReturnValue %30
+ %25 = OpLabel
+ %26 = OpLoad %int %val_root_0 None
+ %27 = OpFunctionCall %int %accept_ptr_deref_call_func %val_root_0
+ %28 = OpIAdd %int %26 %27
+ OpReturnValue %28
OpFunctionEnd
-%accept_ptr_to_struct_and_access = OpFunction %int None %35
+%accept_ptr_to_struct_and_access = OpFunction %int None %33
%val_root_1 = OpFunctionParameter %_ptr_Function_S
- %36 = OpLabel
- %37 = OpAccessChain %_ptr_Function_int %val_root_1 %uint_0
- %39 = OpLoad %int %37 None
- %40 = OpAccessChain %_ptr_Function_int %val_root_1 %uint_1
- %42 = OpLoad %int %40 None
- %43 = OpIAdd %int %39 %42
- OpReturnValue %43
+ %34 = OpLabel
+ %35 = OpAccessChain %_ptr_Function_int %val_root_1 %uint_0
+ %37 = OpLoad %int %35 None
+ %38 = OpAccessChain %_ptr_Function_int %val_root_1 %uint_1
+ %40 = OpLoad %int %38 None
+ %41 = OpIAdd %int %37 %40
+ OpReturnValue %41
OpFunctionEnd
-%accept_ptr_to_struct_access_pass_ptr = OpFunction %int None %35
+%accept_ptr_to_struct_access_pass_ptr = OpFunction %int None %33
%val_root_2 = OpFunctionParameter %_ptr_Function_S
- %46 = OpLabel
+ %44 = OpLabel
%b = OpAccessChain %_ptr_Function_int %val_root_2 %uint_0
OpStore %b %int_2 None
- %49 = OpLoad %int %b None
- OpReturnValue %49
+ %47 = OpLoad %int %b None
+ OpReturnValue %47
OpFunctionEnd
-%accept_ptr_vec_access_elements = OpFunction %int None %55
+%accept_ptr_vec_access_elements = OpFunction %int None %53
%v1_root = OpFunctionParameter %_ptr_Function_v3float
- %56 = OpLabel
- %57 = OpAccessChain %_ptr_Function_v3float %v1_root
- %58 = OpLoad %v3float %57 None
- %59 = OpLoad %v3float %57 None
- %60 = OpExtInst %v3float %61 Cross %58 %59
- %62 = OpCompositeExtract %float %60 0
- %63 = OpAccessChain %_ptr_Function_float %57 %uint_0
- OpStore %63 %62 None
- %65 = OpAccessChain %_ptr_Function_float %57 %uint_0
- %66 = OpLoad %float %65 None
- %67 = OpFunctionCall %int %tint_f32_to_i32 %66
- OpReturnValue %67
+ %54 = OpLabel
+ %55 = OpLoad %v3float %v1_root None
+ %56 = OpLoad %v3float %v1_root None
+ %57 = OpExtInst %v3float %58 Cross %55 %56
+ %59 = OpCompositeExtract %float %57 0
+ %60 = OpAccessChain %_ptr_Function_float %v1_root %uint_0
+ OpStore %60 %59 None
+ %62 = OpAccessChain %_ptr_Function_float %v1_root %uint_0
+ %63 = OpLoad %float %62 None
+ %64 = OpFunctionCall %int %tint_f32_to_i32 %63
+ OpReturnValue %64
OpFunctionEnd
-%call_builtin_with_mod_scope_ptr = OpFunction %int None %70
- %71 = OpLabel
- %72 = OpAtomicLoad %int %g1 %uint_2 %uint_0
- OpReturnValue %72
+%call_builtin_with_mod_scope_ptr = OpFunction %int None %67
+ %68 = OpLabel
+ %69 = OpAtomicLoad %int %g1 %uint_2 %uint_0
+ OpReturnValue %69
OpFunctionEnd
- %main_inner = OpFunction %void None %77
+ %main_inner = OpFunction %void None %74
%tint_local_index = OpFunctionParameter %uint
- %78 = OpLabel
+ %75 = OpLabel
%v1 = OpVariable %_ptr_Function_int Function
%v2 = OpVariable %_ptr_Function_S Function
%v4 = OpVariable %_ptr_Function_v3float Function
- %79 = OpIEqual %bool %tint_local_index %uint_0
- OpSelectionMerge %81 None
- OpBranchConditional %79 %82 %81
- %82 = OpLabel
+ %76 = OpIEqual %bool %tint_local_index %uint_0
+ OpSelectionMerge %78 None
+ OpBranchConditional %76 %79 %78
+ %79 = OpLabel
OpAtomicStore %g1 %uint_2 %uint_0 %int_0
- OpBranch %81
- %81 = OpLabel
+ OpBranch %78
+ %78 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
OpStore %v1 %int_0
- OpStore %v2 %89
- OpStore %v4 %91
+ OpStore %v2 %86
+ OpStore %v4 %88
%t1 = OpAtomicLoad %int %g1 %uint_2 %uint_0
- %93 = OpFunctionCall %int %accept_ptr_deref_pass_through %v1
- %94 = OpFunctionCall %int %accept_ptr_to_struct_and_access %v2
- %95 = OpIAdd %int %93 %94
- %96 = OpFunctionCall %int %accept_ptr_to_struct_and_access %v2
- %97 = OpIAdd %int %95 %96
- %98 = OpFunctionCall %int %accept_ptr_vec_access_elements %v4
- %99 = OpIAdd %int %97 %98
- %100 = OpFunctionCall %int %accept_ptr_to_struct_access_pass_ptr %v2
- %101 = OpIAdd %int %99 %100
- %102 = OpFunctionCall %int %call_builtin_with_mod_scope_ptr
- %103 = OpIAdd %int %101 %102
- %104 = OpIAdd %int %103 %t1
- %105 = OpAccessChain %_ptr_StorageBuffer_int %1 %uint_0
- OpStore %105 %104 None
+ %90 = OpFunctionCall %int %accept_ptr_deref_pass_through %v1
+ %91 = OpFunctionCall %int %accept_ptr_to_struct_and_access %v2
+ %92 = OpIAdd %int %90 %91
+ %93 = OpFunctionCall %int %accept_ptr_to_struct_and_access %v2
+ %94 = OpIAdd %int %92 %93
+ %95 = OpFunctionCall %int %accept_ptr_vec_access_elements %v4
+ %96 = OpIAdd %int %94 %95
+ %97 = OpFunctionCall %int %accept_ptr_to_struct_access_pass_ptr %v2
+ %98 = OpIAdd %int %96 %97
+ %99 = OpFunctionCall %int %call_builtin_with_mod_scope_ptr
+ %100 = OpIAdd %int %98 %99
+ %101 = OpIAdd %int %100 %t1
+ %102 = OpAccessChain %_ptr_StorageBuffer_int %1 %uint_0
+ OpStore %102 %101 None
OpReturn
OpFunctionEnd
-%tint_f32_to_i32 = OpFunction %int None %108
+%tint_f32_to_i32 = OpFunction %int None %105
%value = OpFunctionParameter %float
- %109 = OpLabel
- %110 = OpConvertFToS %int %value
- %111 = OpFOrdGreaterThanEqual %bool %value %float_n2_14748365e_09
- %113 = OpSelect %int %111 %110 %int_n2147483648
- %115 = OpFOrdLessThanEqual %bool %value %float_2_14748352e_09
- %117 = OpSelect %int %115 %113 %int_2147483647
- OpReturnValue %117
+ %106 = OpLabel
+ %107 = OpConvertFToS %int %value
+ %108 = OpFOrdGreaterThanEqual %bool %value %float_n2_14748365e_09
+ %110 = OpSelect %int %108 %107 %int_n2147483648
+ %112 = OpFOrdLessThanEqual %bool %value %float_2_14748352e_09
+ %114 = OpSelect %int %112 %110 %int_2147483647
+ OpReturnValue %114
OpFunctionEnd
- %main = OpFunction %void None %120
- %121 = OpLabel
- %122 = OpLoad %uint %main_local_invocation_index_Input None
- %123 = OpFunctionCall %void %main_inner %122
+ %main = OpFunction %void None %117
+ %118 = OpLabel
+ %119 = OpLoad %uint %main_local_invocation_index_Input None
+ %120 = OpFunctionCall %void %main_inner %119
OpReturn
OpFunctionEnd
diff --git a/test/tint/bug/tint/1086.wgsl.expected.spvasm b/test/tint/bug/tint/1086.wgsl.expected.spvasm
index c9c0f17..732cc87 100644
--- a/test/tint/bug/tint/1086.wgsl.expected.spvasm
+++ b/test/tint/bug/tint/1086.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 17
+; Bound: 16
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -20,17 +20,16 @@
%float_0 = OpConstant %float 0
%x = OpFunction %void None %7
%8 = OpLabel
- %9 = OpAccessChain %_ptr_Private_float %v
- OpStore %9 %float_0 None
+ OpStore %v %float_0 None
OpReturn
OpFunctionEnd
%g = OpFunction %void None %7
- %12 = OpLabel
- %13 = OpFunctionCall %void %x
+ %11 = OpLabel
+ %12 = OpFunctionCall %void %x
OpReturn
OpFunctionEnd
%f = OpFunction %void None %7
- %15 = OpLabel
- %16 = OpFunctionCall %void %g
+ %14 = OpLabel
+ %15 = OpFunctionCall %void %g
OpReturn
OpFunctionEnd
diff --git a/test/tint/bug/tint/2054.wgsl.expected.spvasm b/test/tint/bug/tint/2054.wgsl.expected.spvasm
index be75e4d..81b02d1 100644
--- a/test/tint/bug/tint/2054.wgsl.expected.spvasm
+++ b/test/tint/bug/tint/2054.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 35
+; Bound: 34
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -33,35 +33,34 @@
%float_0 = OpConstant %float 0
%bool = OpTypeBool
%false = OpConstantFalse %bool
- %25 = OpTypeFunction %void
- %28 = OpConstantNull %float
+ %24 = OpTypeFunction %void
+ %27 = OpConstantNull %float
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
%uint = OpTypeInt 32 0
%uint_0 = OpConstant %uint 0
%bar = OpFunction %void None %9
%p_root = OpFunctionParameter %_ptr_Function_float
%10 = OpLabel
- %11 = OpAccessChain %_ptr_Function_float %p_root
- %14 = OpFOrdGreaterThanEqual %bool %a %float_0
- OpSelectionMerge %17 None
- OpBranchConditional %14 %18 %19
- %18 = OpLabel
- %20 = OpFOrdGreaterThanEqual %bool %b %float_0
- OpBranch %17
- %19 = OpLabel
- OpBranch %17
+ %13 = OpFOrdGreaterThanEqual %bool %a %float_0
+ OpSelectionMerge %16 None
+ OpBranchConditional %13 %17 %18
%17 = OpLabel
- %cond = OpPhi %bool %20 %18 %false %19
- %23 = OpSelect %float %cond %b %a
- OpStore %11 %23 None
+ %19 = OpFOrdGreaterThanEqual %bool %b %float_0
+ OpBranch %16
+ %18 = OpLabel
+ OpBranch %16
+ %16 = OpLabel
+ %cond = OpPhi %bool %19 %17 %false %18
+ %22 = OpSelect %float %cond %b %a
+ OpStore %p_root %22 None
OpReturn
OpFunctionEnd
- %foo = OpFunction %void None %25
- %26 = OpLabel
- %param = OpVariable %_ptr_Function_float Function %28
- %29 = OpFunctionCall %void %bar %param
- %30 = OpLoad %float %param None
- %31 = OpAccessChain %_ptr_StorageBuffer_float %1 %uint_0
- OpStore %31 %30 None
+ %foo = OpFunction %void None %24
+ %25 = OpLabel
+ %param = OpVariable %_ptr_Function_float Function %27
+ %28 = OpFunctionCall %void %bar %param
+ %29 = OpLoad %float %param None
+ %30 = OpAccessChain %_ptr_StorageBuffer_float %1 %uint_0
+ OpStore %30 %29 None
OpReturn
OpFunctionEnd
diff --git a/test/tint/bug/tint/219.spvasm.expected.spvasm b/test/tint/bug/tint/219.spvasm.expected.spvasm
index 292f782..4f6e36b 100644
--- a/test/tint/bug/tint/219.spvasm.expected.spvasm
+++ b/test/tint/bug/tint/219.spvasm.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 24
+; Bound: 23
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -22,24 +22,23 @@
%uint = OpTypeInt 32 0
%uint_0 = OpConstant %uint 0
%void = OpTypeVoid
- %16 = OpTypeFunction %void
- %19 = OpConstantNull %v2float
+ %15 = OpTypeFunction %void
+ %18 = OpConstantNull %v2float
%x_200 = OpFunction %float None %6
%x_201_root = OpFunctionParameter %_ptr_Function_v2float
%7 = OpLabel
- %8 = OpAccessChain %_ptr_Function_v2float %x_201_root
- %9 = OpAccessChain %_ptr_Function_float %8 %uint_0
- %x_212 = OpLoad %float %9 None
+ %8 = OpAccessChain %_ptr_Function_float %x_201_root %uint_0
+ %x_212 = OpLoad %float %8 None
OpReturnValue %x_212
OpFunctionEnd
- %main_1 = OpFunction %void None %16
- %17 = OpLabel
- %x_11 = OpVariable %_ptr_Function_v2float Function %19
+ %main_1 = OpFunction %void None %15
+ %16 = OpLabel
+ %x_11 = OpVariable %_ptr_Function_v2float Function %18
%x_12 = OpFunctionCall %float %x_200 %x_11
OpReturn
OpFunctionEnd
- %main = OpFunction %void None %16
- %22 = OpLabel
- %23 = OpFunctionCall %void %main_1
+ %main = OpFunction %void None %15
+ %21 = OpLabel
+ %22 = OpFunctionCall %void %main_1
OpReturn
OpFunctionEnd
diff --git a/test/tint/bug/tint/948.wgsl.expected.spvasm b/test/tint/bug/tint/948.wgsl.expected.spvasm
index 069af42..e5037a2 100644
--- a/test/tint/bug/tint/948.wgsl.expected.spvasm
+++ b/test/tint/bug/tint/948.wgsl.expected.spvasm
@@ -1,10 +1,10 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 370
+; Bound: 369
; Schema: 0
OpCapability Shader
- %134 = OpExtInstImport "GLSL.std.450"
+ %133 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %main_loc2_Input %main_loc5_Input %main_loc4_Input %main_loc3_Input %main_loc0_Input %main_loc1_Input %main_loc0_Output
OpExecutionMode %main OriginUpperLeft
@@ -242,29 +242,29 @@
%uint_0 = OpConstant %uint 0
%uint_7 = OpConstant %uint 7
%float_0 = OpConstant %float 0
- %70 = OpTypeSampledImage %13
+ %69 = OpTypeSampledImage %13
%float_0_25 = OpConstant %float 0.25
%float_0_5 = OpConstant %float 0.5
%void = OpTypeVoid
- %104 = OpTypeFunction %void
+ %103 = OpTypeFunction %void
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Function_v2float = OpTypePointer Function %v2float
%int = OpTypeInt 32 1
%_ptr_Function_int = OpTypePointer Function %int
- %117 = OpConstantNull %int
+ %116 = OpConstantNull %int
%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
- %123 = OpConstantNull %mat4v4float
+ %122 = OpConstantNull %mat4v4float
%_ptr_Function_v3float = OpTypePointer Function %v3float
%uint_1 = OpConstant %uint 1
%float_1 = OpConstant %float 1
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
%uint_5 = OpConstant %uint 5
- %148 = OpConstantComposite %v2float %float_1 %float_1
+ %147 = OpConstantComposite %v2float %float_1 %float_1
%uint_4 = OpConstant %uint 4
%int_0 = OpConstant %int 0
%int_2 = OpConstant %int 2
%bool = OpTypeBool
- %178 = OpConstantComposite %v2float %float_0_5 %float_0_5
+ %177 = OpConstantComposite %v2float %float_0_5 %float_0_5
%uint_2 = OpConstant %uint 2
%float_8 = OpConstant %float 8
%uint_3 = OpConstant %uint 3
@@ -272,66 +272,65 @@
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%uint_8 = OpConstant %uint 8
%main_out = OpTypeStruct %v4float
- %355 = OpTypeFunction %main_out %v2float %v2float %v2float %v2float %v3float %v2float
+ %354 = OpTypeFunction %main_out %v2float %v2float %v2float %v2float %v3float %v2float
%getFrameData_f1_ = OpFunction %mat4v4float None %53
%frameID_root = OpFunctionParameter %_ptr_Function_float
%54 = OpLabel
%fX = OpVariable %_ptr_Function_float Function %27
- %55 = OpAccessChain %_ptr_Function_float %frameID_root
- %x_15 = OpLoad %float %55 None
- %58 = OpAccessChain %_ptr_Uniform_float %1 %uint_0 %uint_7
- %x_25 = OpLoad %float %58 None
- %63 = OpFDiv %float %x_15 %x_25
- OpStore %fX %63 None
+ %x_15 = OpLoad %float %frameID_root None
+ %57 = OpAccessChain %_ptr_Uniform_float %1 %uint_0 %uint_7
+ %x_25 = OpLoad %float %57 None
+ %62 = OpFDiv %float %x_15 %x_25
+ OpStore %fX %62 None
%x_37 = OpLoad %float %fX None
- %65 = OpLoad %13 %frameMapTexture None
- %66 = OpLoad %16 %frameMapSampler None
- %67 = OpCompositeConstruct %v2float %x_37 %float_0
- %69 = OpSampledImage %70 %65 %66
- %x_40 = OpImageSampleImplicitLod %v4float %69 %67 Bias %float_0
+ %64 = OpLoad %13 %frameMapTexture None
+ %65 = OpLoad %16 %frameMapSampler None
+ %66 = OpCompositeConstruct %v2float %x_37 %float_0
+ %68 = OpSampledImage %69 %64 %65
+ %x_40 = OpImageSampleImplicitLod %v4float %68 %66 Bias %float_0
%x_44 = OpLoad %float %fX None
- %73 = OpLoad %13 %frameMapTexture None
- %74 = OpLoad %16 %frameMapSampler None
- %75 = OpCompositeConstruct %v2float %x_44 %float_0_25
- %77 = OpSampledImage %70 %73 %74
- %x_47 = OpImageSampleImplicitLod %v4float %77 %75 Bias %float_0
+ %72 = OpLoad %13 %frameMapTexture None
+ %73 = OpLoad %16 %frameMapSampler None
+ %74 = OpCompositeConstruct %v2float %x_44 %float_0_25
+ %76 = OpSampledImage %69 %72 %73
+ %x_47 = OpImageSampleImplicitLod %v4float %76 %74 Bias %float_0
%x_51 = OpLoad %float %fX None
- %80 = OpLoad %13 %frameMapTexture None
- %81 = OpLoad %16 %frameMapSampler None
- %82 = OpCompositeConstruct %v2float %x_51 %float_0_5
- %84 = OpSampledImage %70 %80 %81
- %x_54 = OpImageSampleImplicitLod %v4float %84 %82 Bias %float_0
- %86 = OpCompositeExtract %float %x_40 0
- %87 = OpCompositeExtract %float %x_40 1
- %88 = OpCompositeExtract %float %x_40 2
- %89 = OpCompositeExtract %float %x_40 3
- %90 = OpCompositeConstruct %v4float %86 %87 %88 %89
- %91 = OpCompositeExtract %float %x_47 0
- %92 = OpCompositeExtract %float %x_47 1
- %93 = OpCompositeExtract %float %x_47 2
- %94 = OpCompositeExtract %float %x_47 3
- %95 = OpCompositeConstruct %v4float %91 %92 %93 %94
- %96 = OpCompositeExtract %float %x_54 0
- %97 = OpCompositeExtract %float %x_54 1
- %98 = OpCompositeExtract %float %x_54 2
- %99 = OpCompositeExtract %float %x_54 3
- %100 = OpCompositeConstruct %v4float %96 %97 %98 %99
- %101 = OpCompositeConstruct %mat4v4float %90 %95 %100 %x_217
- OpReturnValue %101
+ %79 = OpLoad %13 %frameMapTexture None
+ %80 = OpLoad %16 %frameMapSampler None
+ %81 = OpCompositeConstruct %v2float %x_51 %float_0_5
+ %83 = OpSampledImage %69 %79 %80
+ %x_54 = OpImageSampleImplicitLod %v4float %83 %81 Bias %float_0
+ %85 = OpCompositeExtract %float %x_40 0
+ %86 = OpCompositeExtract %float %x_40 1
+ %87 = OpCompositeExtract %float %x_40 2
+ %88 = OpCompositeExtract %float %x_40 3
+ %89 = OpCompositeConstruct %v4float %85 %86 %87 %88
+ %90 = OpCompositeExtract %float %x_47 0
+ %91 = OpCompositeExtract %float %x_47 1
+ %92 = OpCompositeExtract %float %x_47 2
+ %93 = OpCompositeExtract %float %x_47 3
+ %94 = OpCompositeConstruct %v4float %90 %91 %92 %93
+ %95 = OpCompositeExtract %float %x_54 0
+ %96 = OpCompositeExtract %float %x_54 1
+ %97 = OpCompositeExtract %float %x_54 2
+ %98 = OpCompositeExtract %float %x_54 3
+ %99 = OpCompositeConstruct %v4float %95 %96 %97 %98
+ %100 = OpCompositeConstruct %mat4v4float %89 %94 %99 %x_217
+ OpReturnValue %100
OpFunctionEnd
- %main_1 = OpFunction %void None %104
- %105 = OpLabel
+ %main_1 = OpFunction %void None %103
+ %104 = OpLabel
%color = OpVariable %_ptr_Function_v4float Function %x_217
%tileUV = OpVariable %_ptr_Function_v2float Function %19
%tileID = OpVariable %_ptr_Function_v2float Function %19
%sheetUnits = OpVariable %_ptr_Function_v2float Function %19
%spriteUnits = OpVariable %_ptr_Function_float Function %27
%stageUnits = OpVariable %_ptr_Function_v2float Function %19
- %i = OpVariable %_ptr_Function_int Function %117
+ %i = OpVariable %_ptr_Function_int Function %116
%frameID_1 = OpVariable %_ptr_Function_float Function %27
%animationData = OpVariable %_ptr_Function_v4float Function %x_217
%f = OpVariable %_ptr_Function_float Function %27
- %frameData = OpVariable %_ptr_Function_mat4v4float Function %123
+ %frameData = OpVariable %_ptr_Function_mat4v4float Function %122
%param = OpVariable %_ptr_Function_float Function %27
%frameSize = OpVariable %_ptr_Function_v2float Function %19
%offset_1 = OpVariable %_ptr_Function_v2float Function %19
@@ -341,297 +340,297 @@
%mixed = OpVariable %_ptr_Function_v3float Function %38
OpStore %color %x_217 None
%x_86 = OpLoad %v2float %tUV None
- %133 = OpExtInst %v2float %134 Fract %x_86
- OpStore %tileUV %133 None
- %135 = OpAccessChain %_ptr_Function_float %tileUV %uint_1
- %x_91 = OpLoad %float %135 None
- %138 = OpFSub %float %float_1 %x_91
- %140 = OpAccessChain %_ptr_Function_float %tileUV %uint_1
- OpStore %140 %138 None
+ %132 = OpExtInst %v2float %133 Fract %x_86
+ OpStore %tileUV %132 None
+ %134 = OpAccessChain %_ptr_Function_float %tileUV %uint_1
+ %x_91 = OpLoad %float %134 None
+ %137 = OpFSub %float %float_1 %x_91
+ %139 = OpAccessChain %_ptr_Function_float %tileUV %uint_1
+ OpStore %139 %137 None
%x_95 = OpLoad %v2float %tUV None
- %142 = OpExtInst %v2float %134 Floor %x_95
- OpStore %tileID %142 None
- %143 = OpAccessChain %_ptr_Uniform_v2float %1 %uint_0 %uint_5
- %x_101 = OpLoad %v2float %143 None
- %147 = OpFDiv %v2float %148 %x_101
- OpStore %sheetUnits %147 None
- %149 = OpAccessChain %_ptr_Uniform_float %1 %uint_0 %uint_7
- %x_106 = OpLoad %float %149 None
- %151 = OpFDiv %float %float_1 %x_106
- OpStore %spriteUnits %151 None
- %152 = OpAccessChain %_ptr_Uniform_v2float %1 %uint_0 %uint_4
- %x_111 = OpLoad %v2float %152 None
- %155 = OpFDiv %v2float %148 %x_111
- OpStore %stageUnits %155 None
+ %141 = OpExtInst %v2float %133 Floor %x_95
+ OpStore %tileID %141 None
+ %142 = OpAccessChain %_ptr_Uniform_v2float %1 %uint_0 %uint_5
+ %x_101 = OpLoad %v2float %142 None
+ %146 = OpFDiv %v2float %147 %x_101
+ OpStore %sheetUnits %146 None
+ %148 = OpAccessChain %_ptr_Uniform_float %1 %uint_0 %uint_7
+ %x_106 = OpLoad %float %148 None
+ %150 = OpFDiv %float %float_1 %x_106
+ OpStore %spriteUnits %150 None
+ %151 = OpAccessChain %_ptr_Uniform_v2float %1 %uint_0 %uint_4
+ %x_111 = OpLoad %v2float %151 None
+ %154 = OpFDiv %v2float %147 %x_111
+ OpStore %stageUnits %154 None
OpStore %i %int_0 None
- OpBranch %159
- %159 = OpLabel
- OpLoopMerge %160 %158 None
- OpBranch %157
- %157 = OpLabel
+ OpBranch %158
+ %158 = OpLabel
+ OpLoopMerge %159 %157 None
+ OpBranch %156
+ %156 = OpLabel
%x_122 = OpLoad %int %i None
- %162 = OpSLessThan %bool %x_122 %int_2
- OpSelectionMerge %165 None
- OpBranchConditional %162 %165 %166
- %166 = OpLabel
- OpBranch %160
+ %161 = OpSLessThan %bool %x_122 %int_2
+ OpSelectionMerge %164 None
+ OpBranchConditional %161 %164 %165
%165 = OpLabel
+ OpBranch %159
+ %164 = OpLabel
%x_126 = OpLoad %int %i None
- OpSelectionMerge %171 None
- OpSwitch %x_126 %168 1 %169 0 %170
- %169 = OpLabel
- %x_150 = OpLoad %v2float %tileID None
- %173 = OpAccessChain %_ptr_Uniform_v2float %1 %uint_0 %uint_4
- %x_154 = OpLoad %v2float %173 None
- %175 = OpLoad %13 %tileMapsTexture1 None
- %176 = OpLoad %16 %tileMapsSampler None
- %177 = OpFAdd %v2float %x_150 %178
- %179 = OpFDiv %v2float %177 %x_154
- %180 = OpSampledImage %70 %175 %176
- %x_156 = OpImageSampleImplicitLod %v4float %180 %179 Bias %float_0
- %182 = OpCompositeExtract %float %x_156 0
- OpStore %frameID_1 %182 None
- OpBranch %171
- %170 = OpLabel
- %x_136 = OpLoad %v2float %tileID None
- %184 = OpAccessChain %_ptr_Uniform_v2float %1 %uint_0 %uint_4
- %x_140 = OpLoad %v2float %184 None
- %186 = OpLoad %13 %tileMapsTexture0 None
- %187 = OpLoad %16 %tileMapsSampler None
- %188 = OpFAdd %v2float %x_136 %178
- %189 = OpFDiv %v2float %188 %x_140
- %190 = OpSampledImage %70 %186 %187
- %x_142 = OpImageSampleImplicitLod %v4float %190 %189 Bias %float_0
- %192 = OpCompositeExtract %float %x_142 0
- OpStore %frameID_1 %192 None
- OpBranch %171
+ OpSelectionMerge %170 None
+ OpSwitch %x_126 %167 1 %168 0 %169
%168 = OpLabel
- OpBranch %171
- %171 = OpLabel
+ %x_150 = OpLoad %v2float %tileID None
+ %172 = OpAccessChain %_ptr_Uniform_v2float %1 %uint_0 %uint_4
+ %x_154 = OpLoad %v2float %172 None
+ %174 = OpLoad %13 %tileMapsTexture1 None
+ %175 = OpLoad %16 %tileMapsSampler None
+ %176 = OpFAdd %v2float %x_150 %177
+ %178 = OpFDiv %v2float %176 %x_154
+ %179 = OpSampledImage %69 %174 %175
+ %x_156 = OpImageSampleImplicitLod %v4float %179 %178 Bias %float_0
+ %181 = OpCompositeExtract %float %x_156 0
+ OpStore %frameID_1 %181 None
+ OpBranch %170
+ %169 = OpLabel
+ %x_136 = OpLoad %v2float %tileID None
+ %183 = OpAccessChain %_ptr_Uniform_v2float %1 %uint_0 %uint_4
+ %x_140 = OpLoad %v2float %183 None
+ %185 = OpLoad %13 %tileMapsTexture0 None
+ %186 = OpLoad %16 %tileMapsSampler None
+ %187 = OpFAdd %v2float %x_136 %177
+ %188 = OpFDiv %v2float %187 %x_140
+ %189 = OpSampledImage %69 %185 %186
+ %x_142 = OpImageSampleImplicitLod %v4float %189 %188 Bias %float_0
+ %191 = OpCompositeExtract %float %x_142 0
+ OpStore %frameID_1 %191 None
+ OpBranch %170
+ %167 = OpLabel
+ OpBranch %170
+ %170 = OpLabel
%x_166 = OpLoad %float %frameID_1 None
- %194 = OpAccessChain %_ptr_Uniform_float %1 %uint_0 %uint_7
- %x_169 = OpLoad %float %194 None
- %196 = OpLoad %13 %animationMapTexture None
- %197 = OpLoad %16 %animationMapSampler None
- %198 = OpFAdd %float %x_166 %float_0_5
- %199 = OpFDiv %float %198 %x_169
- %200 = OpCompositeConstruct %v2float %199 %float_0
- %201 = OpSampledImage %70 %196 %197
- %x_172 = OpImageSampleImplicitLod %v4float %201 %200 Bias %float_0
+ %193 = OpAccessChain %_ptr_Uniform_float %1 %uint_0 %uint_7
+ %x_169 = OpLoad %float %193 None
+ %195 = OpLoad %13 %animationMapTexture None
+ %196 = OpLoad %16 %animationMapSampler None
+ %197 = OpFAdd %float %x_166 %float_0_5
+ %198 = OpFDiv %float %197 %x_169
+ %199 = OpCompositeConstruct %v2float %198 %float_0
+ %200 = OpSampledImage %69 %195 %196
+ %x_172 = OpImageSampleImplicitLod %v4float %200 %199 Bias %float_0
OpStore %animationData %x_172 None
- %203 = OpAccessChain %_ptr_Function_float %animationData %uint_1
- %x_174 = OpLoad %float %203 None
- %205 = OpFOrdGreaterThan %bool %x_174 %float_0
- OpSelectionMerge %206 None
- OpBranchConditional %205 %207 %206
- %207 = OpLabel
- %208 = OpAccessChain %_ptr_Uniform_float %1 %uint_0 %uint_0
- %x_181 = OpLoad %float %208 None
- %210 = OpAccessChain %_ptr_Function_float %animationData %uint_2
- %x_184 = OpLoad %float %210 None
- %213 = OpFMul %float %x_181 %x_184
- %214 = OpFRem %float %213 %float_1
- OpStore %mt %214 None
+ %202 = OpAccessChain %_ptr_Function_float %animationData %uint_1
+ %x_174 = OpLoad %float %202 None
+ %204 = OpFOrdGreaterThan %bool %x_174 %float_0
+ OpSelectionMerge %205 None
+ OpBranchConditional %204 %206 %205
+ %206 = OpLabel
+ %207 = OpAccessChain %_ptr_Uniform_float %1 %uint_0 %uint_0
+ %x_181 = OpLoad %float %207 None
+ %209 = OpAccessChain %_ptr_Function_float %animationData %uint_2
+ %x_184 = OpLoad %float %209 None
+ %212 = OpFMul %float %x_181 %x_184
+ %213 = OpFRem %float %212 %float_1
+ OpStore %mt %213 None
OpStore %f %float_0 None
- OpBranch %217
- %217 = OpLabel
- OpLoopMerge %218 %216 None
- OpBranch %215
- %215 = OpLabel
- %x_193 = OpLoad %float %f None
- %220 = OpFOrdLessThan %bool %x_193 %float_8
- OpSelectionMerge %222 None
- OpBranchConditional %220 %222 %223
- %223 = OpLabel
- OpBranch %218
- %222 = OpLabel
- %224 = OpAccessChain %_ptr_Function_float %animationData %uint_1
- %x_197 = OpLoad %float %224 None
- %x_198 = OpLoad %float %mt None
- %227 = OpFOrdGreaterThan %bool %x_197 %x_198
- OpSelectionMerge %228 None
- OpBranchConditional %227 %229 %228
- %229 = OpLabel
- %230 = OpAccessChain %_ptr_Function_float %animationData %uint_0
- %x_203 = OpLoad %float %230 None
- OpStore %frameID_1 %x_203 None
- OpBranch %218
- %228 = OpLabel
- %x_208 = OpLoad %float %frameID_1 None
- %233 = OpAccessChain %_ptr_Uniform_float %1 %uint_0 %uint_7
- %x_211 = OpLoad %float %233 None
- %x_214 = OpLoad %float %f None
- OpStore %animationData %x_217 None
OpBranch %216
%216 = OpLabel
- %x_218 = OpLoad %float %f None
- %237 = OpFAdd %float %x_218 %float_1
- OpStore %f %237 None
+ OpLoopMerge %217 %215 None
+ OpBranch %214
+ %214 = OpLabel
+ %x_193 = OpLoad %float %f None
+ %219 = OpFOrdLessThan %bool %x_193 %float_8
+ OpSelectionMerge %221 None
+ OpBranchConditional %219 %221 %222
+ %222 = OpLabel
OpBranch %217
- %218 = OpLabel
- OpBranch %206
- %206 = OpLabel
+ %221 = OpLabel
+ %223 = OpAccessChain %_ptr_Function_float %animationData %uint_1
+ %x_197 = OpLoad %float %223 None
+ %x_198 = OpLoad %float %mt None
+ %226 = OpFOrdGreaterThan %bool %x_197 %x_198
+ OpSelectionMerge %227 None
+ OpBranchConditional %226 %228 %227
+ %228 = OpLabel
+ %229 = OpAccessChain %_ptr_Function_float %animationData %uint_0
+ %x_203 = OpLoad %float %229 None
+ OpStore %frameID_1 %x_203 None
+ OpBranch %217
+ %227 = OpLabel
+ %x_208 = OpLoad %float %frameID_1 None
+ %232 = OpAccessChain %_ptr_Uniform_float %1 %uint_0 %uint_7
+ %x_211 = OpLoad %float %232 None
+ %x_214 = OpLoad %float %f None
+ OpStore %animationData %x_217 None
+ OpBranch %215
+ %215 = OpLabel
+ %x_218 = OpLoad %float %f None
+ %236 = OpFAdd %float %x_218 %float_1
+ OpStore %f %236 None
+ OpBranch %216
+ %217 = OpLabel
+ OpBranch %205
+ %205 = OpLabel
%x_222 = OpLoad %float %frameID_1 None
- %239 = OpFAdd %float %x_222 %float_0_5
- OpStore %param %239 None
+ %238 = OpFAdd %float %x_222 %float_0_5
+ OpStore %param %238 None
%x_225 = OpFunctionCall %mat4v4float %getFrameData_f1_ %param
OpStore %frameData %x_225 None
- %241 = OpAccessChain %_ptr_Function_v4float %frameData %int_0
- %x_228 = OpLoad %v4float %241 None
- %243 = OpAccessChain %_ptr_Uniform_v2float %1 %uint_0 %uint_5
- %x_231 = OpLoad %v2float %243 None
- %245 = OpCompositeExtract %float %x_228 3
- %246 = OpCompositeExtract %float %x_228 2
- %247 = OpCompositeConstruct %v2float %245 %246
- %248 = OpFDiv %v2float %247 %x_231
- OpStore %frameSize %248 None
- %249 = OpAccessChain %_ptr_Function_v4float %frameData %int_0
- %x_235 = OpLoad %v4float %249 None
+ %240 = OpAccessChain %_ptr_Function_v4float %frameData %int_0
+ %x_228 = OpLoad %v4float %240 None
+ %242 = OpAccessChain %_ptr_Uniform_v2float %1 %uint_0 %uint_5
+ %x_231 = OpLoad %v2float %242 None
+ %244 = OpCompositeExtract %float %x_228 3
+ %245 = OpCompositeExtract %float %x_228 2
+ %246 = OpCompositeConstruct %v2float %244 %245
+ %247 = OpFDiv %v2float %246 %x_231
+ OpStore %frameSize %247 None
+ %248 = OpAccessChain %_ptr_Function_v4float %frameData %int_0
+ %x_235 = OpLoad %v4float %248 None
%x_237 = OpLoad %v2float %sheetUnits None
- %252 = OpCompositeExtract %float %x_235 0
- %253 = OpCompositeExtract %float %x_235 1
- %254 = OpCompositeConstruct %v2float %252 %253
- %255 = OpFMul %v2float %254 %x_237
- OpStore %offset_1 %255 None
- %256 = OpAccessChain %_ptr_Function_v4float %frameData %int_2
- %x_241 = OpLoad %v4float %256 None
- %258 = OpAccessChain %_ptr_Function_v4float %frameData %int_0
- %x_244 = OpLoad %v4float %258 None
- %260 = OpCompositeExtract %float %x_241 0
- %261 = OpCompositeExtract %float %x_241 1
- %262 = OpCompositeConstruct %v2float %260 %261
- %263 = OpCompositeExtract %float %x_244 3
- %264 = OpCompositeExtract %float %x_244 2
- %265 = OpCompositeConstruct %v2float %263 %264
- %266 = OpFDiv %v2float %262 %265
- OpStore %ratio %266 None
- %267 = OpAccessChain %_ptr_Function_v4float %frameData %int_2
- %268 = OpAccessChain %_ptr_Function_float %267 %uint_2
- %x_248 = OpLoad %float %268 None
- %270 = OpFOrdEqual %bool %x_248 %float_1
- OpSelectionMerge %271 None
- OpBranchConditional %270 %272 %271
- %272 = OpLabel
- %x_252 = OpLoad %v2float %tileUV None
- %274 = OpCompositeExtract %float %x_252 1
- %275 = OpCompositeExtract %float %x_252 0
- %276 = OpCompositeConstruct %v2float %274 %275
- OpStore %tileUV %276 None
- OpBranch %271
+ %251 = OpCompositeExtract %float %x_235 0
+ %252 = OpCompositeExtract %float %x_235 1
+ %253 = OpCompositeConstruct %v2float %251 %252
+ %254 = OpFMul %v2float %253 %x_237
+ OpStore %offset_1 %254 None
+ %255 = OpAccessChain %_ptr_Function_v4float %frameData %int_2
+ %x_241 = OpLoad %v4float %255 None
+ %257 = OpAccessChain %_ptr_Function_v4float %frameData %int_0
+ %x_244 = OpLoad %v4float %257 None
+ %259 = OpCompositeExtract %float %x_241 0
+ %260 = OpCompositeExtract %float %x_241 1
+ %261 = OpCompositeConstruct %v2float %259 %260
+ %262 = OpCompositeExtract %float %x_244 3
+ %263 = OpCompositeExtract %float %x_244 2
+ %264 = OpCompositeConstruct %v2float %262 %263
+ %265 = OpFDiv %v2float %261 %264
+ OpStore %ratio %265 None
+ %266 = OpAccessChain %_ptr_Function_v4float %frameData %int_2
+ %267 = OpAccessChain %_ptr_Function_float %266 %uint_2
+ %x_248 = OpLoad %float %267 None
+ %269 = OpFOrdEqual %bool %x_248 %float_1
+ OpSelectionMerge %270 None
+ OpBranchConditional %269 %271 %270
%271 = OpLabel
+ %x_252 = OpLoad %v2float %tileUV None
+ %273 = OpCompositeExtract %float %x_252 1
+ %274 = OpCompositeExtract %float %x_252 0
+ %275 = OpCompositeConstruct %v2float %273 %274
+ OpStore %tileUV %275 None
+ OpBranch %270
+ %270 = OpLabel
%x_254 = OpLoad %int %i None
- %278 = OpIEqual %bool %x_254 %int_0
- OpSelectionMerge %279 None
- OpBranchConditional %278 %280 %281
- %280 = OpLabel
+ %277 = OpIEqual %bool %x_254 %int_0
+ OpSelectionMerge %278 None
+ OpBranchConditional %277 %279 %280
+ %279 = OpLabel
%x_263 = OpLoad %v2float %tileUV None
%x_264 = OpLoad %v2float %frameSize None
%x_266 = OpLoad %v2float %offset_1 None
- %285 = OpLoad %13 %spriteSheetTexture None
- %286 = OpLoad %16 %spriteSheetSampler None
- %287 = OpFMul %v2float %x_263 %x_264
- %288 = OpFAdd %v2float %287 %x_266
- %289 = OpSampledImage %70 %285 %286
- %x_268 = OpImageSampleImplicitLod %v4float %289 %288 None
+ %284 = OpLoad %13 %spriteSheetTexture None
+ %285 = OpLoad %16 %spriteSheetSampler None
+ %286 = OpFMul %v2float %x_263 %x_264
+ %287 = OpFAdd %v2float %286 %x_266
+ %288 = OpSampledImage %69 %284 %285
+ %x_268 = OpImageSampleImplicitLod %v4float %288 %287 None
OpStore %color %x_268 None
- OpBranch %279
- %281 = OpLabel
+ OpBranch %278
+ %280 = OpLabel
%x_274 = OpLoad %v2float %tileUV None
%x_275 = OpLoad %v2float %frameSize None
%x_277 = OpLoad %v2float %offset_1 None
- %294 = OpLoad %13 %spriteSheetTexture None
- %295 = OpLoad %16 %spriteSheetSampler None
- %296 = OpFMul %v2float %x_274 %x_275
- %297 = OpFAdd %v2float %296 %x_277
- %298 = OpSampledImage %70 %294 %295
- %x_279 = OpImageSampleImplicitLod %v4float %298 %297 None
+ %293 = OpLoad %13 %spriteSheetTexture None
+ %294 = OpLoad %16 %spriteSheetSampler None
+ %295 = OpFMul %v2float %x_274 %x_275
+ %296 = OpFAdd %v2float %295 %x_277
+ %297 = OpSampledImage %69 %293 %294
+ %x_279 = OpImageSampleImplicitLod %v4float %297 %296 None
OpStore %nc %x_279 None
- %300 = OpAccessChain %_ptr_Function_float %color %uint_3
- %x_283 = OpLoad %float %300 None
- %303 = OpAccessChain %_ptr_Function_float %nc %uint_3
- %x_285 = OpLoad %float %303 None
- %305 = OpFAdd %float %x_283 %x_285
- %306 = OpExtInst %float %134 FMin %305 %float_1
- OpStore %alpha %306 None
+ %299 = OpAccessChain %_ptr_Function_float %color %uint_3
+ %x_283 = OpLoad %float %299 None
+ %302 = OpAccessChain %_ptr_Function_float %nc %uint_3
+ %x_285 = OpLoad %float %302 None
+ %304 = OpFAdd %float %x_283 %x_285
+ %305 = OpExtInst %float %133 FMin %304 %float_1
+ OpStore %alpha %305 None
%x_290 = OpLoad %v4float %color None
%x_292 = OpLoad %v4float %nc None
- %309 = OpAccessChain %_ptr_Function_float %nc %uint_3
- %x_295 = OpLoad %float %309 None
- %311 = OpCompositeExtract %float %x_290 0
- %312 = OpCompositeExtract %float %x_290 1
- %313 = OpCompositeExtract %float %x_290 2
- %314 = OpCompositeConstruct %v3float %311 %312 %313
- %315 = OpCompositeExtract %float %x_292 0
- %316 = OpCompositeExtract %float %x_292 1
- %317 = OpCompositeExtract %float %x_292 2
- %318 = OpCompositeConstruct %v3float %315 %316 %317
- %319 = OpCompositeConstruct %v3float %x_295 %x_295 %x_295
- %320 = OpExtInst %v3float %134 FMix %314 %318 %319
- OpStore %mixed %320 None
+ %308 = OpAccessChain %_ptr_Function_float %nc %uint_3
+ %x_295 = OpLoad %float %308 None
+ %310 = OpCompositeExtract %float %x_290 0
+ %311 = OpCompositeExtract %float %x_290 1
+ %312 = OpCompositeExtract %float %x_290 2
+ %313 = OpCompositeConstruct %v3float %310 %311 %312
+ %314 = OpCompositeExtract %float %x_292 0
+ %315 = OpCompositeExtract %float %x_292 1
+ %316 = OpCompositeExtract %float %x_292 2
+ %317 = OpCompositeConstruct %v3float %314 %315 %316
+ %318 = OpCompositeConstruct %v3float %x_295 %x_295 %x_295
+ %319 = OpExtInst %v3float %133 FMix %313 %317 %318
+ OpStore %mixed %319 None
%x_298 = OpLoad %v3float %mixed None
%x_299 = OpLoad %float %alpha None
- %323 = OpCompositeExtract %float %x_298 0
- %324 = OpCompositeExtract %float %x_298 1
- %325 = OpCompositeExtract %float %x_298 2
- %326 = OpCompositeConstruct %v4float %323 %324 %325 %x_299
- OpStore %color %326 None
- OpBranch %279
- %279 = OpLabel
- OpBranch %158
- %158 = OpLabel
+ %322 = OpCompositeExtract %float %x_298 0
+ %323 = OpCompositeExtract %float %x_298 1
+ %324 = OpCompositeExtract %float %x_298 2
+ %325 = OpCompositeConstruct %v4float %322 %323 %324 %x_299
+ OpStore %color %325 None
+ OpBranch %278
+ %278 = OpLabel
+ OpBranch %157
+ %157 = OpLabel
%x_304 = OpLoad %int %i None
- %328 = OpIAdd %int %x_304 %int_1
- OpStore %i %328 None
- OpBranch %159
- %160 = OpLabel
- %330 = OpAccessChain %_ptr_Uniform_v3float %1 %uint_0 %uint_8
- %x_310 = OpLoad %v3float %330 None
+ %327 = OpIAdd %int %x_304 %int_1
+ OpStore %i %327 None
+ OpBranch %158
+ %159 = OpLabel
+ %329 = OpAccessChain %_ptr_Uniform_v3float %1 %uint_0 %uint_8
+ %x_310 = OpLoad %v3float %329 None
%x_311 = OpLoad %v4float %color None
- %335 = OpCompositeExtract %float %x_311 0
- %336 = OpCompositeExtract %float %x_311 1
- %337 = OpCompositeExtract %float %x_311 2
- %338 = OpCompositeConstruct %v3float %335 %336 %337
- %x_313 = OpFMul %v3float %338 %x_310
+ %334 = OpCompositeExtract %float %x_311 0
+ %335 = OpCompositeExtract %float %x_311 1
+ %336 = OpCompositeExtract %float %x_311 2
+ %337 = OpCompositeConstruct %v3float %334 %335 %336
+ %x_313 = OpFMul %v3float %337 %x_310
%x_314 = OpLoad %v4float %color None
- %341 = OpCompositeExtract %float %x_313 0
- %342 = OpCompositeExtract %float %x_313 1
- %343 = OpCompositeExtract %float %x_313 2
- %344 = OpCompositeExtract %float %x_314 3
- %345 = OpCompositeConstruct %v4float %341 %342 %343 %344
- OpStore %color %345 None
+ %340 = OpCompositeExtract %float %x_313 0
+ %341 = OpCompositeExtract %float %x_313 1
+ %342 = OpCompositeExtract %float %x_313 2
+ %343 = OpCompositeExtract %float %x_314 3
+ %344 = OpCompositeConstruct %v4float %340 %341 %342 %343
+ OpStore %color %344 None
%x_318 = OpLoad %v4float %color None
OpStore %glFragColor %x_318 None
OpReturn
OpFunctionEnd
- %main_inner = OpFunction %main_out None %355
+ %main_inner = OpFunction %main_out None %354
%tUV_param = OpFunctionParameter %v2float
%tileID_1_param = OpFunctionParameter %v2float
%levelUnits_param = OpFunctionParameter %v2float
%stageUnits_1_param = OpFunctionParameter %v2float
%vPosition_param = OpFunctionParameter %v3float
%vUV_param = OpFunctionParameter %v2float
- %356 = OpLabel
+ %355 = OpLabel
OpStore %tUV %tUV_param None
OpStore %tileID_1 %tileID_1_param None
OpStore %levelUnits %levelUnits_param None
OpStore %stageUnits_1 %stageUnits_1_param None
OpStore %vPosition %vPosition_param None
OpStore %vUV %vUV_param None
- %357 = OpFunctionCall %void %main_1
- %358 = OpLoad %v4float %glFragColor None
- %359 = OpCompositeConstruct %main_out %358
- OpReturnValue %359
+ %356 = OpFunctionCall %void %main_1
+ %357 = OpLoad %v4float %glFragColor None
+ %358 = OpCompositeConstruct %main_out %357
+ OpReturnValue %358
OpFunctionEnd
- %main = OpFunction %void None %104
- %361 = OpLabel
- %362 = OpLoad %v2float %main_loc2_Input None
- %363 = OpLoad %v2float %main_loc5_Input None
- %364 = OpLoad %v2float %main_loc4_Input None
- %365 = OpLoad %v2float %main_loc3_Input None
- %366 = OpLoad %v3float %main_loc0_Input None
- %367 = OpLoad %v2float %main_loc1_Input None
- %368 = OpFunctionCall %main_out %main_inner %362 %363 %364 %365 %366 %367
- %369 = OpCompositeExtract %v4float %368 0
- OpStore %main_loc0_Output %369 None
+ %main = OpFunction %void None %103
+ %360 = OpLabel
+ %361 = OpLoad %v2float %main_loc2_Input None
+ %362 = OpLoad %v2float %main_loc5_Input None
+ %363 = OpLoad %v2float %main_loc4_Input None
+ %364 = OpLoad %v2float %main_loc3_Input None
+ %365 = OpLoad %v3float %main_loc0_Input None
+ %366 = OpLoad %v2float %main_loc1_Input None
+ %367 = OpFunctionCall %main_out %main_inner %361 %362 %363 %364 %365 %366
+ %368 = OpCompositeExtract %v4float %367 0
+ OpStore %main_loc0_Output %368 None
OpReturn
OpFunctionEnd
diff --git a/test/tint/bug/tint/949.wgsl.expected.spvasm b/test/tint/bug/tint/949.wgsl.expected.spvasm
index 2632ab3..71af069 100644
--- a/test/tint/bug/tint/949.wgsl.expected.spvasm
+++ b/test/tint/bug/tint/949.wgsl.expected.spvasm
@@ -1,10 +1,10 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 640
+; Bound: 624
; Schema: 0
OpCapability Shader
- %89 = OpExtInstImport "GLSL.std.450"
+ %85 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %main_loc1_Input %main_loc0_Input %main_front_facing_Input %main_loc3_Input %main_loc2_Input %main_loc0_Output
OpExecutionMode %main OriginUpperLeft
@@ -439,31 +439,31 @@
%uint_0 = OpConstant %uint 0
%uint_1 = OpConstant %uint 1
%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
- %152 = OpTypeFunction %mat3v3float %_ptr_Function_mat3v3float
- %158 = OpConstantNull %mat3v3float
+ %148 = OpTypeFunction %mat3v3float %_ptr_Function_mat3v3float
+ %154 = OpConstantNull %mat3v3float
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
%int_2 = OpConstant %int 2
%uint_2 = OpConstant %uint 2
- %209 = OpTypeFunction %v3float %_ptr_Function_mat3v3float %_ptr_Function_v3float %_ptr_Function_float
+ %205 = OpTypeFunction %v3float %_ptr_Function_mat3v3float %_ptr_Function_v3float %_ptr_Function_float
%float_2 = OpConstant %float 2
%float_1 = OpConstant %float 1
- %233 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+ %224 = OpConstantComposite %v3float %float_1 %float_1 %float_1
%lightingInfo = OpTypeStruct %v3float %v3float
%_ptr_Function_v4float = OpTypePointer Function %v4float
- %247 = OpTypeFunction %lightingInfo %_ptr_Function_v3float %_ptr_Function_v3float %_ptr_Function_v4float %_ptr_Function_v3float %_ptr_Function_v3float %_ptr_Function_v3float %_ptr_Function_float
+ %238 = OpTypeFunction %lightingInfo %_ptr_Function_v3float %_ptr_Function_v3float %_ptr_Function_v4float %_ptr_Function_v3float %_ptr_Function_v3float %_ptr_Function_v3float %_ptr_Function_float
%_ptr_Function_lightingInfo = OpTypePointer Function %lightingInfo
- %259 = OpConstantNull %lightingInfo
+ %243 = OpConstantNull %lightingInfo
%float_0_5 = OpConstant %float 0.5
%float_0 = OpConstant %float 0
%void = OpTypeVoid
- %302 = OpTypeFunction %void
+ %286 = OpTypeFunction %void
%_ptr_Function_int = OpTypePointer Function %int
- %331 = OpConstantNull %int
+ %315 = OpConstantNull %int
%float_100 = OpConstant %float 100
- %360 = OpConstantComposite %v3float %float_0_5 %float_0_5 %float_0_5
- %365 = OpTypeSampledImage %11
+ %344 = OpConstantComposite %v3float %float_0_5 %float_0_5 %float_0_5
+ %349 = OpTypeSampledImage %11
%_ptr_Uniform_float = OpTypePointer Uniform %float
%uint_6 = OpConstant %uint 6
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
@@ -477,7 +477,7 @@
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%uint_3 = OpConstant %uint 3
%main_out = OpTypeStruct %v4float
- %626 = OpTypeFunction %main_out %v2float %v4float %bool %v2float %v4float
+ %610 = OpTypeFunction %main_out %v2float %v4float %bool %v2float %v4float
%cotangent_frame_vf3_vf3_vf2_vf2_ = OpFunction %mat3v3float None %62
%normal_1_root = OpFunctionParameter %_ptr_Function_v3float
%p_root = OpFunctionParameter %_ptr_Function_v3float
@@ -493,181 +493,172 @@
%tangent = OpVariable %_ptr_Function_v3float Function %8
%bitangent = OpVariable %_ptr_Function_v3float Function %8
%invmax = OpVariable %_ptr_Function_float Function %4
- %64 = OpAccessChain %_ptr_Function_v3float %normal_1_root
- %65 = OpAccessChain %_ptr_Function_v3float %p_root
- %66 = OpAccessChain %_ptr_Function_v2float %uv_root
- %67 = OpAccessChain %_ptr_Function_v2float %tangentSpaceParams_root
- %x_133 = OpLoad %v3float %65 None
- %79 = OpDPdx %v3float %x_133
- OpStore %dp1 %79 None
- %x_136 = OpLoad %v3float %65 None
- %81 = OpDPdy %v3float %x_136
- OpStore %dp2 %81 None
- %x_139 = OpLoad %v2float %66 None
- %83 = OpDPdx %v2float %x_139
- OpStore %duv1 %83 None
- %x_142 = OpLoad %v2float %66 None
- %85 = OpDPdy %v2float %x_142
- OpStore %duv2 %85 None
+ %x_133 = OpLoad %v3float %p_root None
+ %75 = OpDPdx %v3float %x_133
+ OpStore %dp1 %75 None
+ %x_136 = OpLoad %v3float %p_root None
+ %77 = OpDPdy %v3float %x_136
+ OpStore %dp2 %77 None
+ %x_139 = OpLoad %v2float %uv_root None
+ %79 = OpDPdx %v2float %x_139
+ OpStore %duv1 %79 None
+ %x_142 = OpLoad %v2float %uv_root None
+ %81 = OpDPdy %v2float %x_142
+ OpStore %duv2 %81 None
%x_145 = OpLoad %v3float %dp2 None
- %x_146 = OpLoad %v3float %64 None
- %88 = OpExtInst %v3float %89 Cross %x_145 %x_146
- OpStore %dp2perp %88 None
- %x_149 = OpLoad %v3float %64 None
+ %x_146 = OpLoad %v3float %normal_1_root None
+ %84 = OpExtInst %v3float %85 Cross %x_145 %x_146
+ OpStore %dp2perp %84 None
+ %x_149 = OpLoad %v3float %normal_1_root None
%x_150 = OpLoad %v3float %dp1 None
- %92 = OpExtInst %v3float %89 Cross %x_149 %x_150
- OpStore %dp1perp %92 None
+ %88 = OpExtInst %v3float %85 Cross %x_149 %x_150
+ OpStore %dp1perp %88 None
%x_153 = OpLoad %v3float %dp2perp None
- %94 = OpAccessChain %_ptr_Function_float %duv1 %uint_0
- %x_155 = OpLoad %float %94 None
+ %90 = OpAccessChain %_ptr_Function_float %duv1 %uint_0
+ %x_155 = OpLoad %float %90 None
%x_157 = OpLoad %v3float %dp1perp None
- %98 = OpAccessChain %_ptr_Function_float %duv2 %uint_0
- %x_159 = OpLoad %float %98 None
- %100 = OpVectorTimesScalar %v3float %x_153 %x_155
- %101 = OpVectorTimesScalar %v3float %x_157 %x_159
- %102 = OpFAdd %v3float %100 %101
- OpStore %tangent %102 None
+ %94 = OpAccessChain %_ptr_Function_float %duv2 %uint_0
+ %x_159 = OpLoad %float %94 None
+ %96 = OpVectorTimesScalar %v3float %x_153 %x_155
+ %97 = OpVectorTimesScalar %v3float %x_157 %x_159
+ %98 = OpFAdd %v3float %96 %97
+ OpStore %tangent %98 None
%x_163 = OpLoad %v3float %dp2perp None
- %104 = OpAccessChain %_ptr_Function_float %duv1 %uint_1
- %x_165 = OpLoad %float %104 None
+ %100 = OpAccessChain %_ptr_Function_float %duv1 %uint_1
+ %x_165 = OpLoad %float %100 None
%x_167 = OpLoad %v3float %dp1perp None
- %108 = OpAccessChain %_ptr_Function_float %duv2 %uint_1
- %x_169 = OpLoad %float %108 None
- %110 = OpVectorTimesScalar %v3float %x_163 %x_165
- %111 = OpVectorTimesScalar %v3float %x_167 %x_169
- %112 = OpFAdd %v3float %110 %111
- OpStore %bitangent %112 None
- %113 = OpAccessChain %_ptr_Function_float %67 %uint_0
- %x_173 = OpLoad %float %113 None
+ %104 = OpAccessChain %_ptr_Function_float %duv2 %uint_1
+ %x_169 = OpLoad %float %104 None
+ %106 = OpVectorTimesScalar %v3float %x_163 %x_165
+ %107 = OpVectorTimesScalar %v3float %x_167 %x_169
+ %108 = OpFAdd %v3float %106 %107
+ OpStore %bitangent %108 None
+ %109 = OpAccessChain %_ptr_Function_float %tangentSpaceParams_root %uint_0
+ %x_173 = OpLoad %float %109 None
%x_174 = OpLoad %v3float %tangent None
- %116 = OpVectorTimesScalar %v3float %x_174 %x_173
- OpStore %tangent %116 None
- %117 = OpAccessChain %_ptr_Function_float %67 %uint_1
- %x_177 = OpLoad %float %117 None
+ %112 = OpVectorTimesScalar %v3float %x_174 %x_173
+ OpStore %tangent %112 None
+ %113 = OpAccessChain %_ptr_Function_float %tangentSpaceParams_root %uint_1
+ %x_177 = OpLoad %float %113 None
%x_178 = OpLoad %v3float %bitangent None
- %120 = OpVectorTimesScalar %v3float %x_178 %x_177
- OpStore %bitangent %120 None
+ %116 = OpVectorTimesScalar %v3float %x_178 %x_177
+ OpStore %bitangent %116 None
%x_181 = OpLoad %v3float %tangent None
%x_182 = OpLoad %v3float %tangent None
%x_184 = OpLoad %v3float %bitangent None
%x_185 = OpLoad %v3float %bitangent None
- %125 = OpDot %float %x_181 %x_182
- %126 = OpDot %float %x_184 %x_185
- %127 = OpExtInst %float %89 FMax %125 %126
- %128 = OpExtInst %float %89 InverseSqrt %127
- OpStore %invmax %128 None
+ %121 = OpDot %float %x_181 %x_182
+ %122 = OpDot %float %x_184 %x_185
+ %123 = OpExtInst %float %85 FMax %121 %122
+ %124 = OpExtInst %float %85 InverseSqrt %123
+ OpStore %invmax %124 None
%x_189 = OpLoad %v3float %tangent None
%x_190 = OpLoad %float %invmax None
%x_191 = OpVectorTimesScalar %v3float %x_189 %x_190
%x_192 = OpLoad %v3float %bitangent None
%x_193 = OpLoad %float %invmax None
%x_194 = OpVectorTimesScalar %v3float %x_192 %x_193
- %x_195 = OpLoad %v3float %64 None
- %136 = OpCompositeExtract %float %x_191 0
- %137 = OpCompositeExtract %float %x_191 1
- %138 = OpCompositeExtract %float %x_191 2
+ %x_195 = OpLoad %v3float %normal_1_root None
+ %132 = OpCompositeExtract %float %x_191 0
+ %133 = OpCompositeExtract %float %x_191 1
+ %134 = OpCompositeExtract %float %x_191 2
+ %135 = OpCompositeConstruct %v3float %132 %133 %134
+ %136 = OpCompositeExtract %float %x_194 0
+ %137 = OpCompositeExtract %float %x_194 1
+ %138 = OpCompositeExtract %float %x_194 2
%139 = OpCompositeConstruct %v3float %136 %137 %138
- %140 = OpCompositeExtract %float %x_194 0
- %141 = OpCompositeExtract %float %x_194 1
- %142 = OpCompositeExtract %float %x_194 2
+ %140 = OpCompositeExtract %float %x_195 0
+ %141 = OpCompositeExtract %float %x_195 1
+ %142 = OpCompositeExtract %float %x_195 2
%143 = OpCompositeConstruct %v3float %140 %141 %142
- %144 = OpCompositeExtract %float %x_195 0
- %145 = OpCompositeExtract %float %x_195 1
- %146 = OpCompositeExtract %float %x_195 2
- %147 = OpCompositeConstruct %v3float %144 %145 %146
- %148 = OpCompositeConstruct %mat3v3float %139 %143 %147
- OpReturnValue %148
+ %144 = OpCompositeConstruct %mat3v3float %135 %139 %143
+ OpReturnValue %144
OpFunctionEnd
-%transposeMat3_mf33_ = OpFunction %mat3v3float None %152
+%transposeMat3_mf33_ = OpFunction %mat3v3float None %148
%inMatrix_root = OpFunctionParameter %_ptr_Function_mat3v3float
- %153 = OpLabel
+ %149 = OpLabel
%i0 = OpVariable %_ptr_Function_v3float Function %8
%i1 = OpVariable %_ptr_Function_v3float Function %8
%i2 = OpVariable %_ptr_Function_v3float Function %8
- %outMatrix = OpVariable %_ptr_Function_mat3v3float Function %158
- %159 = OpAccessChain %_ptr_Function_v3float %inMatrix_root %int_0
- %x_60 = OpLoad %v3float %159 None
+ %outMatrix = OpVariable %_ptr_Function_mat3v3float Function %154
+ %155 = OpAccessChain %_ptr_Function_v3float %inMatrix_root %int_0
+ %x_60 = OpLoad %v3float %155 None
OpStore %i0 %x_60 None
- %163 = OpAccessChain %_ptr_Function_v3float %inMatrix_root %int_1
- %x_64 = OpLoad %v3float %163 None
+ %159 = OpAccessChain %_ptr_Function_v3float %inMatrix_root %int_1
+ %x_64 = OpLoad %v3float %159 None
OpStore %i1 %x_64 None
- %166 = OpAccessChain %_ptr_Function_v3float %inMatrix_root %int_2
- %x_68 = OpLoad %v3float %166 None
+ %162 = OpAccessChain %_ptr_Function_v3float %inMatrix_root %int_2
+ %x_68 = OpLoad %v3float %162 None
OpStore %i2 %x_68 None
- %169 = OpAccessChain %_ptr_Function_float %i0 %uint_0
- %x_73 = OpLoad %float %169 None
- %171 = OpAccessChain %_ptr_Function_float %i1 %uint_0
- %x_75 = OpLoad %float %171 None
- %173 = OpAccessChain %_ptr_Function_float %i2 %uint_0
- %x_77 = OpLoad %float %173 None
+ %165 = OpAccessChain %_ptr_Function_float %i0 %uint_0
+ %x_73 = OpLoad %float %165 None
+ %167 = OpAccessChain %_ptr_Function_float %i1 %uint_0
+ %x_75 = OpLoad %float %167 None
+ %169 = OpAccessChain %_ptr_Function_float %i2 %uint_0
+ %x_77 = OpLoad %float %169 None
%x_78 = OpCompositeConstruct %v3float %x_73 %x_75 %x_77
- %176 = OpAccessChain %_ptr_Function_float %i0 %uint_1
- %x_81 = OpLoad %float %176 None
- %178 = OpAccessChain %_ptr_Function_float %i1 %uint_1
- %x_83 = OpLoad %float %178 None
- %180 = OpAccessChain %_ptr_Function_float %i2 %uint_1
- %x_85 = OpLoad %float %180 None
+ %172 = OpAccessChain %_ptr_Function_float %i0 %uint_1
+ %x_81 = OpLoad %float %172 None
+ %174 = OpAccessChain %_ptr_Function_float %i1 %uint_1
+ %x_83 = OpLoad %float %174 None
+ %176 = OpAccessChain %_ptr_Function_float %i2 %uint_1
+ %x_85 = OpLoad %float %176 None
%x_86 = OpCompositeConstruct %v3float %x_81 %x_83 %x_85
- %183 = OpAccessChain %_ptr_Function_float %i0 %uint_2
- %x_89 = OpLoad %float %183 None
- %186 = OpAccessChain %_ptr_Function_float %i1 %uint_2
- %x_91 = OpLoad %float %186 None
- %188 = OpAccessChain %_ptr_Function_float %i2 %uint_2
- %x_93 = OpLoad %float %188 None
+ %179 = OpAccessChain %_ptr_Function_float %i0 %uint_2
+ %x_89 = OpLoad %float %179 None
+ %182 = OpAccessChain %_ptr_Function_float %i1 %uint_2
+ %x_91 = OpLoad %float %182 None
+ %184 = OpAccessChain %_ptr_Function_float %i2 %uint_2
+ %x_93 = OpLoad %float %184 None
%x_94 = OpCompositeConstruct %v3float %x_89 %x_91 %x_93
- %191 = OpCompositeExtract %float %x_78 0
- %192 = OpCompositeExtract %float %x_78 1
- %193 = OpCompositeExtract %float %x_78 2
+ %187 = OpCompositeExtract %float %x_78 0
+ %188 = OpCompositeExtract %float %x_78 1
+ %189 = OpCompositeExtract %float %x_78 2
+ %190 = OpCompositeConstruct %v3float %187 %188 %189
+ %191 = OpCompositeExtract %float %x_86 0
+ %192 = OpCompositeExtract %float %x_86 1
+ %193 = OpCompositeExtract %float %x_86 2
%194 = OpCompositeConstruct %v3float %191 %192 %193
- %195 = OpCompositeExtract %float %x_86 0
- %196 = OpCompositeExtract %float %x_86 1
- %197 = OpCompositeExtract %float %x_86 2
+ %195 = OpCompositeExtract %float %x_94 0
+ %196 = OpCompositeExtract %float %x_94 1
+ %197 = OpCompositeExtract %float %x_94 2
%198 = OpCompositeConstruct %v3float %195 %196 %197
- %199 = OpCompositeExtract %float %x_94 0
- %200 = OpCompositeExtract %float %x_94 1
- %201 = OpCompositeExtract %float %x_94 2
- %202 = OpCompositeConstruct %v3float %199 %200 %201
- %203 = OpCompositeConstruct %mat3v3float %194 %198 %202
- OpStore %outMatrix %203 None
+ %199 = OpCompositeConstruct %mat3v3float %190 %194 %198
+ OpStore %outMatrix %199 None
%x_110 = OpLoad %mat3v3float %outMatrix None
OpReturnValue %x_110
OpFunctionEnd
-%perturbNormalBase_mf33_vf3_f1_ = OpFunction %v3float None %209
+%perturbNormalBase_mf33_vf3_f1_ = OpFunction %v3float None %205
%cotangentFrame_root = OpFunctionParameter %_ptr_Function_mat3v3float
%normal_root = OpFunctionParameter %_ptr_Function_v3float
%scale_root = OpFunctionParameter %_ptr_Function_float
- %210 = OpLabel
- %211 = OpAccessChain %_ptr_Function_mat3v3float %cotangentFrame_root
- %212 = OpAccessChain %_ptr_Function_v3float %normal_root
- %x_113 = OpLoad %mat3v3float %211 None
- %x_114 = OpLoad %v3float %212 None
- %215 = OpMatrixTimesVector %v3float %x_113 %x_114
- %216 = OpExtInst %v3float %89 Normalize %215
- OpReturnValue %216
+ %206 = OpLabel
+ %x_113 = OpLoad %mat3v3float %cotangentFrame_root None
+ %x_114 = OpLoad %v3float %normal_root None
+ %209 = OpMatrixTimesVector %v3float %x_113 %x_114
+ %210 = OpExtInst %v3float %85 Normalize %209
+ OpReturnValue %210
OpFunctionEnd
-%perturbNormal_mf33_vf3_f1_ = OpFunction %v3float None %209
+%perturbNormal_mf33_vf3_f1_ = OpFunction %v3float None %205
%cotangentFrame_1_root = OpFunctionParameter %_ptr_Function_mat3v3float
%textureSample_root = OpFunctionParameter %_ptr_Function_v3float
%scale_1_root = OpFunctionParameter %_ptr_Function_float
- %221 = OpLabel
- %param = OpVariable %_ptr_Function_mat3v3float Function %158
+ %215 = OpLabel
+ %param = OpVariable %_ptr_Function_mat3v3float Function %154
%param_1 = OpVariable %_ptr_Function_v3float Function %8
%param_2 = OpVariable %_ptr_Function_float Function %4
- %222 = OpAccessChain %_ptr_Function_mat3v3float %cotangentFrame_1_root
- %223 = OpAccessChain %_ptr_Function_v3float %textureSample_root
- %224 = OpAccessChain %_ptr_Function_float %scale_1_root
- %x_119 = OpLoad %v3float %223 None
- %x_125 = OpLoad %mat3v3float %222 None
+ %x_119 = OpLoad %v3float %textureSample_root None
+ %x_125 = OpLoad %mat3v3float %cotangentFrame_1_root None
OpStore %param %x_125 None
- %230 = OpVectorTimesScalar %v3float %x_119 %float_2
- %232 = OpFSub %v3float %230 %233
- OpStore %param_1 %232 None
- %x_128 = OpLoad %float %224 None
+ %221 = OpVectorTimesScalar %v3float %x_119 %float_2
+ %223 = OpFSub %v3float %221 %224
+ OpStore %param_1 %223 None
+ %x_128 = OpLoad %float %scale_1_root None
OpStore %param_2 %x_128 None
%x_129 = OpFunctionCall %v3float %perturbNormalBase_mf33_vf3_f1_ %param %param_1 %param_2
OpReturnValue %x_129
OpFunctionEnd
-%computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_ = OpFunction %lightingInfo None %247
+%computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_ = OpFunction %lightingInfo None %238
%viewDirectionW_root = OpFunctionParameter %_ptr_Function_v3float
%vNormal_root = OpFunctionParameter %_ptr_Function_v3float
%lightData_root = OpFunctionParameter %_ptr_Function_v4float
@@ -675,64 +666,57 @@
%specularColor_root = OpFunctionParameter %_ptr_Function_v3float
%groundColor_root = OpFunctionParameter %_ptr_Function_v3float
%glossiness_root = OpFunctionParameter %_ptr_Function_float
- %248 = OpLabel
+ %239 = OpLabel
%ndl = OpVariable %_ptr_Function_float Function %4
- %result = OpVariable %_ptr_Function_lightingInfo Function %259
+ %result = OpVariable %_ptr_Function_lightingInfo Function %243
%angleW = OpVariable %_ptr_Function_v3float Function %8
%specComp = OpVariable %_ptr_Function_float Function %4
- %249 = OpAccessChain %_ptr_Function_v3float %viewDirectionW_root
- %250 = OpAccessChain %_ptr_Function_v3float %vNormal_root
- %251 = OpAccessChain %_ptr_Function_v4float %lightData_root
- %252 = OpAccessChain %_ptr_Function_v3float %diffuseColor_root
- %253 = OpAccessChain %_ptr_Function_v3float %specularColor_root
- %254 = OpAccessChain %_ptr_Function_v3float %groundColor_root
- %255 = OpAccessChain %_ptr_Function_float %glossiness_root
- %x_212 = OpLoad %v3float %250 None
- %x_213 = OpLoad %v4float %251 None
- %264 = OpCompositeExtract %float %x_213 0
- %265 = OpCompositeExtract %float %x_213 1
- %266 = OpCompositeExtract %float %x_213 2
- %267 = OpCompositeConstruct %v3float %264 %265 %266
- %268 = OpDot %float %x_212 %267
- %269 = OpFMul %float %268 %float_0_5
- %271 = OpFAdd %float %269 %float_0_5
- OpStore %ndl %271 None
- %x_220 = OpLoad %v3float %254 None
- %x_221 = OpLoad %v3float %252 None
+ %x_212 = OpLoad %v3float %vNormal_root None
+ %x_213 = OpLoad %v4float %lightData_root None
+ %248 = OpCompositeExtract %float %x_213 0
+ %249 = OpCompositeExtract %float %x_213 1
+ %250 = OpCompositeExtract %float %x_213 2
+ %251 = OpCompositeConstruct %v3float %248 %249 %250
+ %252 = OpDot %float %x_212 %251
+ %253 = OpFMul %float %252 %float_0_5
+ %255 = OpFAdd %float %253 %float_0_5
+ OpStore %ndl %255 None
+ %x_220 = OpLoad %v3float %groundColor_root None
+ %x_221 = OpLoad %v3float %diffuseColor_root None
%x_222 = OpLoad %float %ndl None
- %275 = OpAccessChain %_ptr_Function_v3float %result %uint_0
- %276 = OpCompositeConstruct %v3float %x_222 %x_222 %x_222
- %277 = OpExtInst %v3float %89 FMix %x_220 %x_221 %276
- OpStore %275 %277 None
- %x_227 = OpLoad %v3float %249 None
- %x_228 = OpLoad %v4float %251 None
- %280 = OpCompositeExtract %float %x_228 0
- %281 = OpCompositeExtract %float %x_228 1
- %282 = OpCompositeExtract %float %x_228 2
- %283 = OpCompositeConstruct %v3float %280 %281 %282
- %284 = OpFAdd %v3float %x_227 %283
- %285 = OpExtInst %v3float %89 Normalize %284
- OpStore %angleW %285 None
- %x_233 = OpLoad %v3float %250 None
+ %259 = OpAccessChain %_ptr_Function_v3float %result %uint_0
+ %260 = OpCompositeConstruct %v3float %x_222 %x_222 %x_222
+ %261 = OpExtInst %v3float %85 FMix %x_220 %x_221 %260
+ OpStore %259 %261 None
+ %x_227 = OpLoad %v3float %viewDirectionW_root None
+ %x_228 = OpLoad %v4float %lightData_root None
+ %264 = OpCompositeExtract %float %x_228 0
+ %265 = OpCompositeExtract %float %x_228 1
+ %266 = OpCompositeExtract %float %x_228 2
+ %267 = OpCompositeConstruct %v3float %264 %265 %266
+ %268 = OpFAdd %v3float %x_227 %267
+ %269 = OpExtInst %v3float %85 Normalize %268
+ OpStore %angleW %269 None
+ %x_233 = OpLoad %v3float %vNormal_root None
%x_234 = OpLoad %v3float %angleW None
- %288 = OpDot %float %x_233 %x_234
- %289 = OpExtInst %float %89 FMax %float_0 %288
- OpStore %specComp %289 None
+ %272 = OpDot %float %x_233 %x_234
+ %273 = OpExtInst %float %85 FMax %float_0 %272
+ OpStore %specComp %273 None
%x_237 = OpLoad %float %specComp None
- %x_238 = OpLoad %float %255 None
- %293 = OpExtInst %float %89 FMax %float_1 %x_238
- %294 = OpExtInst %float %89 Pow %x_237 %293
- OpStore %specComp %294 None
+ %x_238 = OpLoad %float %glossiness_root None
+ %277 = OpExtInst %float %85 FMax %float_1 %x_238
+ %278 = OpExtInst %float %85 Pow %x_237 %277
+ OpStore %specComp %278 None
%x_241 = OpLoad %float %specComp None
- %x_242 = OpLoad %v3float %253 None
- %297 = OpAccessChain %_ptr_Function_v3float %result %uint_1
- %298 = OpVectorTimesScalar %v3float %x_242 %x_241
- OpStore %297 %298 None
+ %x_242 = OpLoad %v3float %specularColor_root None
+ %281 = OpAccessChain %_ptr_Function_v3float %result %uint_1
+ %282 = OpVectorTimesScalar %v3float %x_242 %x_241
+ OpStore %281 %282 None
%x_245 = OpLoad %lightingInfo %result None
OpReturnValue %x_245
OpFunctionEnd
- %main_1 = OpFunction %void None %302
- %303 = OpLabel
+ %main_1 = OpFunction %void None %286
+ %287 = OpLabel
%tempTextureRead = OpVariable %_ptr_Function_v4float Function %x_397
%rgb = OpVariable %_ptr_Function_v3float Function %8
%output5 = OpVariable %_ptr_Function_v3float Function %8
@@ -741,13 +725,13 @@
%normalScale = OpVariable %_ptr_Function_float Function %4
%TBNUV = OpVariable %_ptr_Function_v2float Function %18
%x_299 = OpVariable %_ptr_Function_v2float Function %18
- %TBN = OpVariable %_ptr_Function_mat3v3float Function %158
+ %TBN = OpVariable %_ptr_Function_mat3v3float Function %154
%param_3 = OpVariable %_ptr_Function_v3float Function %8
%param_4 = OpVariable %_ptr_Function_v3float Function %8
%param_5 = OpVariable %_ptr_Function_v2float Function %18
%param_6 = OpVariable %_ptr_Function_v2float Function %18
- %invTBN = OpVariable %_ptr_Function_mat3v3float Function %158
- %param_7 = OpVariable %_ptr_Function_mat3v3float Function %158
+ %invTBN = OpVariable %_ptr_Function_mat3v3float Function %154
+ %param_7 = OpVariable %_ptr_Function_mat3v3float Function %154
%parallaxLimit = OpVariable %_ptr_Function_float Function %4
%vOffsetDir = OpVariable %_ptr_Function_v2float Function %18
%vMaxOffset = OpVariable %_ptr_Function_v2float Function %18
@@ -758,12 +742,12 @@
%vLastOffset = OpVariable %_ptr_Function_v2float Function %18
%lastSampledHeight = OpVariable %_ptr_Function_float Function %4
%currSampledHeight = OpVariable %_ptr_Function_float Function %4
- %i = OpVariable %_ptr_Function_int Function %331
+ %i = OpVariable %_ptr_Function_int Function %315
%delta1 = OpVariable %_ptr_Function_float Function %4
%delta2 = OpVariable %_ptr_Function_float Function %4
%ratio = OpVariable %_ptr_Function_float Function %4
%parallaxOcclusion_0 = OpVariable %_ptr_Function_v2float Function %18
- %param_8 = OpVariable %_ptr_Function_mat3v3float Function %158
+ %param_8 = OpVariable %_ptr_Function_mat3v3float Function %154
%param_9 = OpVariable %_ptr_Function_v3float Function %8
%param_10 = OpVariable %_ptr_Function_float Function %4
%output6 = OpVariable %_ptr_Function_v2float Function %18
@@ -775,7 +759,7 @@
%diffuseBase = OpVariable %_ptr_Function_v3float Function %8
%specularBase = OpVariable %_ptr_Function_v3float Function %8
%normalW = OpVariable %_ptr_Function_v3float Function %8
- %info = OpVariable %_ptr_Function_lightingInfo Function %259
+ %info = OpVariable %_ptr_Function_lightingInfo Function %243
%param_11 = OpVariable %_ptr_Function_v3float Function %8
%param_12 = OpVariable %_ptr_Function_v3float Function %8
%param_13 = OpVariable %_ptr_Function_v4float Function %x_397
@@ -787,71 +771,71 @@
%specularOutput = OpVariable %_ptr_Function_v3float Function %8
%output3 = OpVariable %_ptr_Function_v3float Function %8
OpStore %u_Float %float_100 None
- OpStore %u_Color %360 None
+ OpStore %u_Color %344 None
%x_261 = OpLoad %v2float %vMainuv None
- %362 = OpLoad %11 %TextureSamplerTexture None
- %363 = OpLoad %14 %TextureSamplerSampler None
- %364 = OpSampledImage %365 %362 %363
- %x_262 = OpImageSampleImplicitLod %v4float %364 %x_261 None
+ %346 = OpLoad %11 %TextureSamplerTexture None
+ %347 = OpLoad %14 %TextureSamplerSampler None
+ %348 = OpSampledImage %349 %346 %347
+ %x_262 = OpImageSampleImplicitLod %v4float %348 %x_261 None
OpStore %tempTextureRead %x_262 None
%x_264 = OpLoad %v4float %tempTextureRead None
- %368 = OpAccessChain %_ptr_Uniform_float %19 %uint_0 %uint_6
- %x_273 = OpLoad %float %368 None
- %372 = OpCompositeExtract %float %x_264 0
- %373 = OpCompositeExtract %float %x_264 1
- %374 = OpCompositeExtract %float %x_264 2
- %375 = OpCompositeConstruct %v3float %372 %373 %374
- %376 = OpVectorTimesScalar %v3float %375 %x_273
- OpStore %rgb %376 None
- %377 = OpAccessChain %_ptr_Uniform_v3float %19 %uint_0 %uint_4
- %x_279 = OpLoad %v3float %377 None
+ %352 = OpAccessChain %_ptr_Uniform_float %19 %uint_0 %uint_6
+ %x_273 = OpLoad %float %352 None
+ %356 = OpCompositeExtract %float %x_264 0
+ %357 = OpCompositeExtract %float %x_264 1
+ %358 = OpCompositeExtract %float %x_264 2
+ %359 = OpCompositeConstruct %v3float %356 %357 %358
+ %360 = OpVectorTimesScalar %v3float %359 %x_273
+ OpStore %rgb %360 None
+ %361 = OpAccessChain %_ptr_Uniform_v3float %19 %uint_0 %uint_4
+ %x_279 = OpLoad %v3float %361 None
%x_282 = OpLoad %v4float %v_output1 None
- %382 = OpCompositeExtract %float %x_282 0
- %383 = OpCompositeExtract %float %x_282 1
- %384 = OpCompositeExtract %float %x_282 2
- %385 = OpCompositeConstruct %v3float %382 %383 %384
- %386 = OpFSub %v3float %x_279 %385
- %387 = OpExtInst %v3float %89 Normalize %386
- OpStore %output5 %387 None
+ %366 = OpCompositeExtract %float %x_282 0
+ %367 = OpCompositeExtract %float %x_282 1
+ %368 = OpCompositeExtract %float %x_282 2
+ %369 = OpCompositeConstruct %v3float %366 %367 %368
+ %370 = OpFSub %v3float %x_279 %369
+ %371 = OpExtInst %v3float %85 Normalize %370
+ OpStore %output5 %371 None
OpStore %output4 %x_397 None
OpStore %uvOffset %18 None
- %388 = OpAccessChain %_ptr_Uniform_float %19 %uint_0 %uint_2
- %x_292 = OpLoad %float %388 None
- %390 = OpFDiv %float %float_1 %x_292
- OpStore %normalScale %390 None
+ %372 = OpAccessChain %_ptr_Uniform_float %19 %uint_0 %uint_2
+ %x_292 = OpLoad %float %372 None
+ %374 = OpFDiv %float %float_1 %x_292
+ OpStore %normalScale %374 None
%x_298 = OpLoad %bool %gl_FrontFacing None
- OpSelectionMerge %392 None
- OpBranchConditional %x_298 %393 %394
- %393 = OpLabel
+ OpSelectionMerge %376 None
+ OpBranchConditional %x_298 %377 %378
+ %377 = OpLabel
%x_303 = OpLoad %v2float %v_uv None
OpStore %x_299 %x_303 None
- OpBranch %392
- %394 = OpLabel
+ OpBranch %376
+ %378 = OpLabel
%x_305 = OpLoad %v2float %v_uv None
- %397 = OpFNegate %v2float %x_305
- OpStore %x_299 %397 None
- OpBranch %392
- %392 = OpLabel
+ %381 = OpFNegate %v2float %x_305
+ OpStore %x_299 %381 None
+ OpBranch %376
+ %376 = OpLabel
%x_307 = OpLoad %v2float %x_299 None
OpStore %TBNUV %x_307 None
%x_310 = OpLoad %v4float %v_output2 None
%x_312 = OpLoad %float %normalScale None
- %401 = OpCompositeExtract %float %x_310 0
- %402 = OpCompositeExtract %float %x_310 1
- %403 = OpCompositeExtract %float %x_310 2
- %404 = OpCompositeConstruct %v3float %401 %402 %403
- %405 = OpVectorTimesScalar %v3float %404 %x_312
- OpStore %param_3 %405 None
+ %385 = OpCompositeExtract %float %x_310 0
+ %386 = OpCompositeExtract %float %x_310 1
+ %387 = OpCompositeExtract %float %x_310 2
+ %388 = OpCompositeConstruct %v3float %385 %386 %387
+ %389 = OpVectorTimesScalar %v3float %388 %x_312
+ OpStore %param_3 %389 None
%x_317 = OpLoad %v4float %v_output1 None
- %407 = OpCompositeExtract %float %x_317 0
- %408 = OpCompositeExtract %float %x_317 1
- %409 = OpCompositeExtract %float %x_317 2
- %410 = OpCompositeConstruct %v3float %407 %408 %409
- OpStore %param_4 %410 None
+ %391 = OpCompositeExtract %float %x_317 0
+ %392 = OpCompositeExtract %float %x_317 1
+ %393 = OpCompositeExtract %float %x_317 2
+ %394 = OpCompositeConstruct %v3float %391 %392 %393
+ OpStore %param_4 %394 None
%x_320 = OpLoad %v2float %TBNUV None
OpStore %param_5 %x_320 None
- %412 = OpAccessChain %_ptr_Uniform_v2float %19 %uint_0 %uint_8
- %x_324 = OpLoad %v2float %412 None
+ %396 = OpAccessChain %_ptr_Uniform_v2float %19 %uint_0 %uint_8
+ %x_324 = OpLoad %v2float %396 None
OpStore %param_6 %x_324 None
%x_325 = OpFunctionCall %mat3v3float %cotangent_frame_vf3_vf3_vf2_vf2_ %param_3 %param_4 %param_5 %param_6
OpStore %TBN %x_325 None
@@ -861,290 +845,290 @@
OpStore %invTBN %x_329 None
%x_331 = OpLoad %mat3v3float %invTBN None
%x_332 = OpLoad %v3float %output5 None
- %421 = OpFNegate %v3float %x_332
- %x_334 = OpMatrixTimesVector %v3float %x_331 %421
+ %405 = OpFNegate %v3float %x_332
+ %x_334 = OpMatrixTimesVector %v3float %x_331 %405
%x_337 = OpLoad %mat3v3float %invTBN None
%x_338 = OpLoad %v3float %output5 None
- %425 = OpCompositeExtract %float %x_334 0
- %426 = OpCompositeExtract %float %x_334 1
- %427 = OpCompositeConstruct %v2float %425 %426
- %428 = OpExtInst %float %89 Length %427
- %429 = OpFNegate %v3float %x_338
- %430 = OpMatrixTimesVector %v3float %x_337 %429
- %431 = OpCompositeExtract %float %430 2
- %432 = OpFDiv %float %428 %431
- OpStore %parallaxLimit %432 None
- %433 = OpAccessChain %_ptr_Uniform_float %19 %uint_0 %uint_5
- %x_345 = OpLoad %float %433 None
+ %409 = OpCompositeExtract %float %x_334 0
+ %410 = OpCompositeExtract %float %x_334 1
+ %411 = OpCompositeConstruct %v2float %409 %410
+ %412 = OpExtInst %float %85 Length %411
+ %413 = OpFNegate %v3float %x_338
+ %414 = OpMatrixTimesVector %v3float %x_337 %413
+ %415 = OpCompositeExtract %float %414 2
+ %416 = OpFDiv %float %412 %415
+ OpStore %parallaxLimit %416 None
+ %417 = OpAccessChain %_ptr_Uniform_float %19 %uint_0 %uint_5
+ %x_345 = OpLoad %float %417 None
%x_346 = OpLoad %float %parallaxLimit None
- %437 = OpFMul %float %x_346 %x_345
- OpStore %parallaxLimit %437 None
+ %421 = OpFMul %float %x_346 %x_345
+ OpStore %parallaxLimit %421 None
%x_349 = OpLoad %mat3v3float %invTBN None
%x_350 = OpLoad %v3float %output5 None
- %440 = OpFNegate %v3float %x_350
- %x_352 = OpMatrixTimesVector %v3float %x_349 %440
- %442 = OpCompositeExtract %float %x_352 0
- %443 = OpCompositeExtract %float %x_352 1
- %444 = OpCompositeConstruct %v2float %442 %443
- %445 = OpExtInst %v2float %89 Normalize %444
- OpStore %vOffsetDir %445 None
+ %424 = OpFNegate %v3float %x_350
+ %x_352 = OpMatrixTimesVector %v3float %x_349 %424
+ %426 = OpCompositeExtract %float %x_352 0
+ %427 = OpCompositeExtract %float %x_352 1
+ %428 = OpCompositeConstruct %v2float %426 %427
+ %429 = OpExtInst %v2float %85 Normalize %428
+ OpStore %vOffsetDir %429 None
%x_356 = OpLoad %v2float %vOffsetDir None
%x_357 = OpLoad %float %parallaxLimit None
- %448 = OpVectorTimesScalar %v2float %x_356 %x_357
- OpStore %vMaxOffset %448 None
+ %432 = OpVectorTimesScalar %v2float %x_356 %x_357
+ OpStore %vMaxOffset %432 None
%x_361 = OpLoad %mat3v3float %invTBN None
%x_362 = OpLoad %v3float %output5 None
%x_365 = OpLoad %mat3v3float %invTBN None
%x_366 = OpLoad %v4float %v_output2 None
- %453 = OpFNegate %v3float %x_362
- %454 = OpMatrixTimesVector %v3float %x_361 %453
- %455 = OpCompositeExtract %float %x_366 0
- %456 = OpCompositeExtract %float %x_366 1
- %457 = OpCompositeExtract %float %x_366 2
- %458 = OpCompositeConstruct %v3float %455 %456 %457
- %459 = OpMatrixTimesVector %v3float %x_365 %458
- %460 = OpDot %float %454 %459
- %461 = OpFMul %float %460 %float_n11
- %463 = OpFAdd %float %float_15 %461
- OpStore %numSamples %463 None
+ %437 = OpFNegate %v3float %x_362
+ %438 = OpMatrixTimesVector %v3float %x_361 %437
+ %439 = OpCompositeExtract %float %x_366 0
+ %440 = OpCompositeExtract %float %x_366 1
+ %441 = OpCompositeExtract %float %x_366 2
+ %442 = OpCompositeConstruct %v3float %439 %440 %441
+ %443 = OpMatrixTimesVector %v3float %x_365 %442
+ %444 = OpDot %float %438 %443
+ %445 = OpFMul %float %444 %float_n11
+ %447 = OpFAdd %float %float_15 %445
+ OpStore %numSamples %447 None
%x_374 = OpLoad %float %numSamples None
- %466 = OpFDiv %float %float_1 %x_374
- OpStore %stepSize %466 None
+ %450 = OpFDiv %float %float_1 %x_374
+ OpStore %stepSize %450 None
OpStore %currRayHeight %float_1 None
OpStore %vCurrOffset %18 None
OpStore %vLastOffset %18 None
OpStore %lastSampledHeight %float_1 None
OpStore %currSampledHeight %float_1 None
OpStore %i %int_0 None
- OpBranch %469
- %469 = OpLabel
- OpLoopMerge %470 %468 None
- OpBranch %467
- %467 = OpLabel
+ OpBranch %453
+ %453 = OpLabel
+ OpLoopMerge %454 %452 None
+ OpBranch %451
+ %451 = OpLabel
%x_388 = OpLoad %int %i None
- %472 = OpSLessThan %bool %x_388 %int_15
- OpSelectionMerge %474 None
- OpBranchConditional %472 %474 %475
- %475 = OpLabel
- OpBranch %470
- %474 = OpLabel
+ %456 = OpSLessThan %bool %x_388 %int_15
+ OpSelectionMerge %458 None
+ OpBranchConditional %456 %458 %459
+ %459 = OpLabel
+ OpBranch %454
+ %458 = OpLabel
%x_394 = OpLoad %v2float %v_uv None
%x_395 = OpLoad %v2float %vCurrOffset None
- %478 = OpCompositeExtract %float %x_397 3
- OpStore %currSampledHeight %478 None
+ %462 = OpCompositeExtract %float %x_397 3
+ OpStore %currSampledHeight %462 None
%x_400 = OpLoad %float %currSampledHeight None
%x_401 = OpLoad %float %currRayHeight None
- %481 = OpFOrdGreaterThan %bool %x_400 %x_401
- OpSelectionMerge %482 None
- OpBranchConditional %481 %483 %484
- %483 = OpLabel
+ %465 = OpFOrdGreaterThan %bool %x_400 %x_401
+ OpSelectionMerge %466 None
+ OpBranchConditional %465 %467 %468
+ %467 = OpLabel
%x_406 = OpLoad %float %currSampledHeight None
%x_407 = OpLoad %float %currRayHeight None
- %487 = OpFSub %float %x_406 %x_407
- OpStore %delta1 %487 None
+ %471 = OpFSub %float %x_406 %x_407
+ OpStore %delta1 %471 None
%x_410 = OpLoad %float %currRayHeight None
%x_411 = OpLoad %float %stepSize None
%x_413 = OpLoad %float %lastSampledHeight None
- %491 = OpFAdd %float %x_410 %x_411
- %492 = OpFSub %float %491 %x_413
- OpStore %delta2 %492 None
+ %475 = OpFAdd %float %x_410 %x_411
+ %476 = OpFSub %float %475 %x_413
+ OpStore %delta2 %476 None
%x_416 = OpLoad %float %delta1 None
%x_417 = OpLoad %float %delta1 None
%x_418 = OpLoad %float %delta2 None
- %496 = OpFAdd %float %x_417 %x_418
- %497 = OpFDiv %float %x_416 %496
- OpStore %ratio %497 None
+ %480 = OpFAdd %float %x_417 %x_418
+ %481 = OpFDiv %float %x_416 %480
+ OpStore %ratio %481 None
%x_421 = OpLoad %float %ratio None
%x_422 = OpLoad %v2float %vLastOffset None
%x_424 = OpLoad %float %ratio None
%x_426 = OpLoad %v2float %vCurrOffset None
- %502 = OpVectorTimesScalar %v2float %x_422 %x_421
- %503 = OpFSub %float %float_1 %x_424
- %504 = OpVectorTimesScalar %v2float %x_426 %503
- %505 = OpFAdd %v2float %502 %504
- OpStore %vCurrOffset %505 None
- OpBranch %470
- %484 = OpLabel
+ %486 = OpVectorTimesScalar %v2float %x_422 %x_421
+ %487 = OpFSub %float %float_1 %x_424
+ %488 = OpVectorTimesScalar %v2float %x_426 %487
+ %489 = OpFAdd %v2float %486 %488
+ OpStore %vCurrOffset %489 None
+ OpBranch %454
+ %468 = OpLabel
%x_431 = OpLoad %float %stepSize None
%x_432 = OpLoad %float %currRayHeight None
- %508 = OpFSub %float %x_432 %x_431
- OpStore %currRayHeight %508 None
+ %492 = OpFSub %float %x_432 %x_431
+ OpStore %currRayHeight %492 None
%x_434 = OpLoad %v2float %vCurrOffset None
OpStore %vLastOffset %x_434 None
%x_435 = OpLoad %float %stepSize None
%x_436 = OpLoad %v2float %vMaxOffset None
%x_438 = OpLoad %v2float %vCurrOffset None
- %513 = OpVectorTimesScalar %v2float %x_436 %x_435
- %514 = OpFAdd %v2float %x_438 %513
- OpStore %vCurrOffset %514 None
+ %497 = OpVectorTimesScalar %v2float %x_436 %x_435
+ %498 = OpFAdd %v2float %x_438 %497
+ OpStore %vCurrOffset %498 None
%x_440 = OpLoad %float %currSampledHeight None
OpStore %lastSampledHeight %x_440 None
- OpBranch %482
- %482 = OpLabel
- OpBranch %468
- %468 = OpLabel
+ OpBranch %466
+ %466 = OpLabel
+ OpBranch %452
+ %452 = OpLabel
%x_441 = OpLoad %int %i None
- %517 = OpIAdd %int %x_441 %int_1
- OpStore %i %517 None
- OpBranch %469
- %470 = OpLabel
+ %501 = OpIAdd %int %x_441 %int_1
+ OpStore %i %501 None
+ OpBranch %453
+ %454 = OpLabel
%x_444 = OpLoad %v2float %vCurrOffset None
OpStore %parallaxOcclusion_0 %x_444 None
%x_445 = OpLoad %v2float %parallaxOcclusion_0 None
OpStore %uvOffset %x_445 None
%x_449 = OpLoad %v2float %v_uv None
%x_450 = OpLoad %v2float %uvOffset None
- %522 = OpLoad %11 %TextureSamplerTexture None
- %523 = OpLoad %14 %TextureSamplerSampler None
- %524 = OpFAdd %v2float %x_449 %x_450
- %525 = OpSampledImage %365 %522 %523
- %x_452 = OpImageSampleImplicitLod %v4float %525 %524 None
- %527 = OpAccessChain %_ptr_Uniform_float %19 %uint_0 %uint_2
- %x_454 = OpLoad %float %527 None
+ %506 = OpLoad %11 %TextureSamplerTexture None
+ %507 = OpLoad %14 %TextureSamplerSampler None
+ %508 = OpFAdd %v2float %x_449 %x_450
+ %509 = OpSampledImage %349 %506 %507
+ %x_452 = OpImageSampleImplicitLod %v4float %509 %508 None
+ %511 = OpAccessChain %_ptr_Uniform_float %19 %uint_0 %uint_2
+ %x_454 = OpLoad %float %511 None
%x_457 = OpLoad %mat3v3float %TBN None
OpStore %param_8 %x_457 None
- %530 = OpCompositeExtract %float %x_452 0
- %531 = OpCompositeExtract %float %x_452 1
- %532 = OpCompositeExtract %float %x_452 2
- %533 = OpCompositeConstruct %v3float %530 %531 %532
- OpStore %param_9 %533 None
- %534 = OpFDiv %float %float_1 %x_454
- OpStore %param_10 %534 None
+ %514 = OpCompositeExtract %float %x_452 0
+ %515 = OpCompositeExtract %float %x_452 1
+ %516 = OpCompositeExtract %float %x_452 2
+ %517 = OpCompositeConstruct %v3float %514 %515 %516
+ OpStore %param_9 %517 None
+ %518 = OpFDiv %float %float_1 %x_454
+ OpStore %param_10 %518 None
%x_461 = OpFunctionCall %v3float %perturbNormal_mf33_vf3_f1_ %param_8 %param_9 %param_10
%x_462 = OpLoad %v4float %output4 None
- %537 = OpCompositeExtract %float %x_461 0
- %538 = OpCompositeExtract %float %x_461 1
- %539 = OpCompositeExtract %float %x_461 2
- %540 = OpCompositeExtract %float %x_462 3
- %541 = OpCompositeConstruct %v4float %537 %538 %539 %540
- OpStore %output4 %541 None
+ %521 = OpCompositeExtract %float %x_461 0
+ %522 = OpCompositeExtract %float %x_461 1
+ %523 = OpCompositeExtract %float %x_461 2
+ %524 = OpCompositeExtract %float %x_462 3
+ %525 = OpCompositeConstruct %v4float %521 %522 %523 %524
+ OpStore %output4 %525 None
%x_465 = OpLoad %v2float %v_uv None
%x_466 = OpLoad %v2float %uvOffset None
- %544 = OpFAdd %v2float %x_465 %x_466
- OpStore %output6 %544 None
+ %528 = OpFAdd %v2float %x_465 %x_466
+ OpStore %output6 %528 None
%x_474 = OpLoad %v2float %output6 None
- %546 = OpLoad %11 %TextureSampler1Texture None
- %547 = OpLoad %14 %TextureSampler1Sampler None
- %548 = OpSampledImage %365 %546 %547
- %x_475 = OpImageSampleImplicitLod %v4float %548 %x_474 None
+ %530 = OpLoad %11 %TextureSampler1Texture None
+ %531 = OpLoad %14 %TextureSampler1Sampler None
+ %532 = OpSampledImage %349 %530 %531
+ %x_475 = OpImageSampleImplicitLod %v4float %532 %x_474 None
OpStore %tempTextureRead1 %x_475 None
%x_477 = OpLoad %v4float %tempTextureRead1 None
- %551 = OpCompositeExtract %float %x_477 0
- %552 = OpCompositeExtract %float %x_477 1
- %553 = OpCompositeExtract %float %x_477 2
- %554 = OpCompositeConstruct %v3float %551 %552 %553
- OpStore %rgb1 %554 None
- %555 = OpAccessChain %_ptr_Uniform_v3float %19 %uint_0 %uint_4
- %x_481 = OpLoad %v3float %555 None
+ %535 = OpCompositeExtract %float %x_477 0
+ %536 = OpCompositeExtract %float %x_477 1
+ %537 = OpCompositeExtract %float %x_477 2
+ %538 = OpCompositeConstruct %v3float %535 %536 %537
+ OpStore %rgb1 %538 None
+ %539 = OpAccessChain %_ptr_Uniform_v3float %19 %uint_0 %uint_4
+ %x_481 = OpLoad %v3float %539 None
%x_482 = OpLoad %v4float %v_output1 None
- %558 = OpCompositeExtract %float %x_482 0
- %559 = OpCompositeExtract %float %x_482 1
- %560 = OpCompositeExtract %float %x_482 2
- %561 = OpCompositeConstruct %v3float %558 %559 %560
- %562 = OpFSub %v3float %x_481 %561
- %563 = OpExtInst %v3float %89 Normalize %562
- OpStore %viewDirectionW_1 %563 None
+ %542 = OpCompositeExtract %float %x_482 0
+ %543 = OpCompositeExtract %float %x_482 1
+ %544 = OpCompositeExtract %float %x_482 2
+ %545 = OpCompositeConstruct %v3float %542 %543 %544
+ %546 = OpFSub %v3float %x_481 %545
+ %547 = OpExtInst %v3float %85 Normalize %546
+ OpStore %viewDirectionW_1 %547 None
OpStore %shadow %float_1 None
%x_488 = OpLoad %float %u_Float None
- %565 = OpFMul %float %float_1 %x_488
- OpStore %glossiness_1 %565 None
+ %549 = OpFMul %float %float_1 %x_488
+ OpStore %glossiness_1 %549 None
OpStore %diffuseBase %8 None
OpStore %specularBase %8 None
%x_494 = OpLoad %v4float %output4 None
- %567 = OpCompositeExtract %float %x_494 0
- %568 = OpCompositeExtract %float %x_494 1
- %569 = OpCompositeExtract %float %x_494 2
- %570 = OpCompositeConstruct %v3float %567 %568 %569
- OpStore %normalW %570 None
+ %551 = OpCompositeExtract %float %x_494 0
+ %552 = OpCompositeExtract %float %x_494 1
+ %553 = OpCompositeExtract %float %x_494 2
+ %554 = OpCompositeConstruct %v3float %551 %552 %553
+ OpStore %normalW %554 None
%x_501 = OpLoad %v3float %viewDirectionW_1 None
OpStore %param_11 %x_501 None
%x_503 = OpLoad %v3float %normalW None
OpStore %param_12 %x_503 None
- %573 = OpAccessChain %_ptr_Uniform_v4float %37 %uint_0 %uint_0
- %x_507 = OpLoad %v4float %573 None
+ %557 = OpAccessChain %_ptr_Uniform_v4float %37 %uint_0 %uint_0
+ %x_507 = OpLoad %v4float %557 None
OpStore %param_13 %x_507 None
- %576 = OpAccessChain %_ptr_Uniform_v4float %37 %uint_0 %uint_1
- %x_510 = OpLoad %v4float %576 None
- %578 = OpCompositeExtract %float %x_510 0
- %579 = OpCompositeExtract %float %x_510 1
- %580 = OpCompositeExtract %float %x_510 2
- %581 = OpCompositeConstruct %v3float %578 %579 %580
- OpStore %param_14 %581 None
- %582 = OpAccessChain %_ptr_Uniform_v4float %37 %uint_0 %uint_2
- %x_514 = OpLoad %v4float %582 None
- %584 = OpCompositeExtract %float %x_514 0
- %585 = OpCompositeExtract %float %x_514 1
- %586 = OpCompositeExtract %float %x_514 2
- %587 = OpCompositeConstruct %v3float %584 %585 %586
- OpStore %param_15 %587 None
- %588 = OpAccessChain %_ptr_Uniform_v3float %37 %uint_0 %uint_3
- %x_518 = OpLoad %v3float %588 None
+ %560 = OpAccessChain %_ptr_Uniform_v4float %37 %uint_0 %uint_1
+ %x_510 = OpLoad %v4float %560 None
+ %562 = OpCompositeExtract %float %x_510 0
+ %563 = OpCompositeExtract %float %x_510 1
+ %564 = OpCompositeExtract %float %x_510 2
+ %565 = OpCompositeConstruct %v3float %562 %563 %564
+ OpStore %param_14 %565 None
+ %566 = OpAccessChain %_ptr_Uniform_v4float %37 %uint_0 %uint_2
+ %x_514 = OpLoad %v4float %566 None
+ %568 = OpCompositeExtract %float %x_514 0
+ %569 = OpCompositeExtract %float %x_514 1
+ %570 = OpCompositeExtract %float %x_514 2
+ %571 = OpCompositeConstruct %v3float %568 %569 %570
+ OpStore %param_15 %571 None
+ %572 = OpAccessChain %_ptr_Uniform_v3float %37 %uint_0 %uint_3
+ %x_518 = OpLoad %v3float %572 None
OpStore %param_16 %x_518 None
%x_520 = OpLoad %float %glossiness_1 None
OpStore %param_17 %x_520 None
%x_521 = OpFunctionCall %lightingInfo %computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_ %param_11 %param_12 %param_13 %param_14 %param_15 %param_16 %param_17
OpStore %info %x_521 None
OpStore %shadow %float_1 None
- %593 = OpAccessChain %_ptr_Function_v3float %info %uint_0
- %x_523 = OpLoad %v3float %593 None
+ %577 = OpAccessChain %_ptr_Function_v3float %info %uint_0
+ %x_523 = OpLoad %v3float %577 None
%x_524 = OpLoad %float %shadow None
%x_526 = OpLoad %v3float %diffuseBase None
- %597 = OpVectorTimesScalar %v3float %x_523 %x_524
- %598 = OpFAdd %v3float %x_526 %597
- OpStore %diffuseBase %598 None
- %599 = OpAccessChain %_ptr_Function_v3float %info %uint_1
- %x_529 = OpLoad %v3float %599 None
+ %581 = OpVectorTimesScalar %v3float %x_523 %x_524
+ %582 = OpFAdd %v3float %x_526 %581
+ OpStore %diffuseBase %582 None
+ %583 = OpAccessChain %_ptr_Function_v3float %info %uint_1
+ %x_529 = OpLoad %v3float %583 None
%x_530 = OpLoad %float %shadow None
%x_532 = OpLoad %v3float %specularBase None
- %603 = OpVectorTimesScalar %v3float %x_529 %x_530
- %604 = OpFAdd %v3float %x_532 %603
- OpStore %specularBase %604 None
+ %587 = OpVectorTimesScalar %v3float %x_529 %x_530
+ %588 = OpFAdd %v3float %x_532 %587
+ OpStore %specularBase %588 None
%x_535 = OpLoad %v3float %diffuseBase None
%x_536 = OpLoad %v3float %rgb1 None
- %607 = OpFMul %v3float %x_535 %x_536
- OpStore %diffuseOutput %607 None
+ %591 = OpFMul %v3float %x_535 %x_536
+ OpStore %diffuseOutput %591 None
%x_539 = OpLoad %v3float %specularBase None
%x_540 = OpLoad %v3float %u_Color None
- %610 = OpFMul %v3float %x_539 %x_540
- OpStore %specularOutput %610 None
+ %594 = OpFMul %v3float %x_539 %x_540
+ OpStore %specularOutput %594 None
%x_543 = OpLoad %v3float %diffuseOutput None
%x_544 = OpLoad %v3float %specularOutput None
- %613 = OpFAdd %v3float %x_543 %x_544
- OpStore %output3 %613 None
+ %597 = OpFAdd %v3float %x_543 %x_544
+ OpStore %output3 %597 None
%x_548 = OpLoad %v3float %output3 None
- %615 = OpCompositeExtract %float %x_548 0
- %616 = OpCompositeExtract %float %x_548 1
- %617 = OpCompositeExtract %float %x_548 2
- %618 = OpCompositeConstruct %v4float %615 %616 %617 %float_1
- OpStore %glFragColor %618 None
+ %599 = OpCompositeExtract %float %x_548 0
+ %600 = OpCompositeExtract %float %x_548 1
+ %601 = OpCompositeExtract %float %x_548 2
+ %602 = OpCompositeConstruct %v4float %599 %600 %601 %float_1
+ OpStore %glFragColor %602 None
OpReturn
OpFunctionEnd
- %main_inner = OpFunction %main_out None %626
+ %main_inner = OpFunction %main_out None %610
%vMainuv_param = OpFunctionParameter %v2float
%v_output1_param = OpFunctionParameter %v4float
%gl_FrontFacing_param = OpFunctionParameter %bool
%v_uv_param = OpFunctionParameter %v2float
%v_output2_param = OpFunctionParameter %v4float
- %627 = OpLabel
+ %611 = OpLabel
OpStore %vMainuv %vMainuv_param None
OpStore %v_output1 %v_output1_param None
OpStore %gl_FrontFacing %gl_FrontFacing_param None
OpStore %v_uv %v_uv_param None
OpStore %v_output2 %v_output2_param None
- %628 = OpFunctionCall %void %main_1
- %629 = OpLoad %v4float %glFragColor None
- %630 = OpCompositeConstruct %main_out %629
- OpReturnValue %630
+ %612 = OpFunctionCall %void %main_1
+ %613 = OpLoad %v4float %glFragColor None
+ %614 = OpCompositeConstruct %main_out %613
+ OpReturnValue %614
OpFunctionEnd
- %main = OpFunction %void None %302
- %632 = OpLabel
- %633 = OpLoad %v2float %main_loc1_Input None
- %634 = OpLoad %v4float %main_loc0_Input None
- %635 = OpLoad %bool %main_front_facing_Input None
- %636 = OpLoad %v2float %main_loc3_Input None
- %637 = OpLoad %v4float %main_loc2_Input None
- %638 = OpFunctionCall %main_out %main_inner %633 %634 %635 %636 %637
- %639 = OpCompositeExtract %v4float %638 0
- OpStore %main_loc0_Output %639 None
+ %main = OpFunction %void None %286
+ %616 = OpLabel
+ %617 = OpLoad %v2float %main_loc1_Input None
+ %618 = OpLoad %v4float %main_loc0_Input None
+ %619 = OpLoad %bool %main_front_facing_Input None
+ %620 = OpLoad %v2float %main_loc3_Input None
+ %621 = OpLoad %v4float %main_loc2_Input None
+ %622 = OpFunctionCall %main_out %main_inner %617 %618 %619 %620 %621
+ %623 = OpCompositeExtract %v4float %622 0
+ OpStore %main_loc0_Output %623 None
OpReturn
OpFunctionEnd
diff --git a/test/tint/bug/tint/977.spvasm.expected.spvasm b/test/tint/bug/tint/977.spvasm.expected.spvasm
index a218a13..0ad23b4 100644
--- a/test/tint/bug/tint/977.spvasm.expected.spvasm
+++ b/test/tint/bug/tint/977.spvasm.expected.spvasm
@@ -1,10 +1,10 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 106
+; Bound: 104
; Schema: 0
OpCapability Shader
- %53 = OpExtInstImport "GLSL.std.450"
+ %51 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main" %main_global_invocation_id_Input
OpExecutionMode %main LocalSize 1 1 1
@@ -102,16 +102,16 @@
%float_1 = OpConstant %float 1
%float_2 = OpConstant %float 2
%void = OpTypeVoid
- %77 = OpTypeFunction %void
+ %75 = OpTypeFunction %void
%_ptr_Function_int = OpTypePointer Function %int
- %81 = OpConstantNull %int
+ %79 = OpConstantNull %int
%_ptr_Private_uint = OpTypePointer Private %uint
%uint_0 = OpConstant %uint 0
%int_n10 = OpConstant %int -10
%float_n4 = OpConstant %float -4
%float_n3 = OpConstant %float -3
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
- %99 = OpTypeFunction %void %v3uint
+ %97 = OpTypeFunction %void %v3uint
%binaryOperation_f1_f1_ = OpFunction %float None %28
%a_root = OpFunctionParameter %_ptr_Function_float
%b_root = OpFunctionParameter %_ptr_Function_float
@@ -120,85 +120,83 @@
%continue_execution = OpVariable %_ptr_Function_bool Function
%x_26 = OpVariable %_ptr_Function_float Function %31
OpStore %continue_execution %true
- %36 = OpAccessChain %_ptr_Function_float %a_root
- %37 = OpAccessChain %_ptr_Function_float %b_root
- %39 = OpLoad %float %37 None
- %40 = OpFOrdEqual %bool %39 %float_0
- OpSelectionMerge %42 None
- OpBranchConditional %40 %43 %42
- %43 = OpLabel
+ %37 = OpLoad %float %b_root None
+ %38 = OpFOrdEqual %bool %37 %float_0
+ OpSelectionMerge %40 None
+ OpBranchConditional %38 %41 %40
+ %41 = OpLabel
OpStore %continue_execution %false None
OpStore %return_value %float_1 None
- OpBranch %42
- %42 = OpLabel
- %46 = OpLoad %bool %continue_execution None
- OpSelectionMerge %47 None
- OpBranchConditional %46 %48 %47
- %48 = OpLabel
- %x_21 = OpLoad %float %37 None
- %50 = OpFDiv %float %x_21 %float_2
- %52 = OpExtInst %float %53 Floor %50
- %54 = OpFMul %float %float_2 %52
- %55 = OpFSub %float %x_21 %54
- %56 = OpExtInst %float %53 RoundEven %55
- %57 = OpFOrdEqual %bool %56 %float_1
- %58 = OpLogicalNot %bool %57
- OpSelectionMerge %59 None
- OpBranchConditional %58 %60 %61
- %60 = OpLabel
- %62 = OpLoad %float %36 None
- %63 = OpExtInst %float %53 FAbs %62
- %64 = OpLoad %float %37 None
- %65 = OpExtInst %float %53 Pow %63 %64
- OpStore %x_26 %65 None
- OpBranch %59
- %61 = OpLabel
- %66 = OpLoad %float %36 None
- %67 = OpExtInst %float %53 FSign %66
- %68 = OpLoad %float %36 None
- %69 = OpExtInst %float %53 FAbs %68
- %70 = OpLoad %float %37 None
- %71 = OpExtInst %float %53 Pow %69 %70
- %72 = OpFMul %float %67 %71
- OpStore %x_26 %72 None
- OpBranch %59
+ OpBranch %40
+ %40 = OpLabel
+ %44 = OpLoad %bool %continue_execution None
+ OpSelectionMerge %45 None
+ OpBranchConditional %44 %46 %45
+ %46 = OpLabel
+ %x_21 = OpLoad %float %b_root None
+ %48 = OpFDiv %float %x_21 %float_2
+ %50 = OpExtInst %float %51 Floor %48
+ %52 = OpFMul %float %float_2 %50
+ %53 = OpFSub %float %x_21 %52
+ %54 = OpExtInst %float %51 RoundEven %53
+ %55 = OpFOrdEqual %bool %54 %float_1
+ %56 = OpLogicalNot %bool %55
+ OpSelectionMerge %57 None
+ OpBranchConditional %56 %58 %59
+ %58 = OpLabel
+ %60 = OpLoad %float %a_root None
+ %61 = OpExtInst %float %51 FAbs %60
+ %62 = OpLoad %float %b_root None
+ %63 = OpExtInst %float %51 Pow %61 %62
+ OpStore %x_26 %63 None
+ OpBranch %57
%59 = OpLabel
+ %64 = OpLoad %float %a_root None
+ %65 = OpExtInst %float %51 FSign %64
+ %66 = OpLoad %float %a_root None
+ %67 = OpExtInst %float %51 FAbs %66
+ %68 = OpLoad %float %b_root None
+ %69 = OpExtInst %float %51 Pow %67 %68
+ %70 = OpFMul %float %65 %69
+ OpStore %x_26 %70 None
+ OpBranch %57
+ %57 = OpLabel
%x_41 = OpLoad %float %x_26 None
OpStore %return_value %x_41 None
- OpBranch %47
- %47 = OpLabel
- %74 = OpLoad %float %return_value None
- OpReturnValue %74
+ OpBranch %45
+ %45 = OpLabel
+ %72 = OpLoad %float %return_value None
+ OpReturnValue %72
OpFunctionEnd
- %main_1 = OpFunction %void None %77
- %78 = OpLabel
- %index = OpVariable %_ptr_Function_int Function %81
- %a_1 = OpVariable %_ptr_Function_int Function %81
+ %main_1 = OpFunction %void None %75
+ %76 = OpLabel
+ %index = OpVariable %_ptr_Function_int Function %79
+ %a_1 = OpVariable %_ptr_Function_int Function %79
%param = OpVariable %_ptr_Function_float Function %31
%param_1 = OpVariable %_ptr_Function_float Function %31
- %85 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0
- %88 = OpLoad %uint %85 None
- %89 = OpBitcast %int %88
- OpStore %index %89 None
+ %83 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0
+ %86 = OpLoad %uint %83 None
+ %87 = OpBitcast %int %86
+ OpStore %index %87 None
OpStore %a_1 %int_n10 None
%x_63 = OpLoad %int %index None
OpStore %param %float_n4 None
OpStore %param_1 %float_n3 None
%x_68 = OpFunctionCall %float %binaryOperation_f1_f1_ %param %param_1
- %95 = OpAccessChain %_ptr_StorageBuffer_float %resultMatrix %uint_0 %x_63
- OpStore %95 %x_68 None
+ %93 = OpAccessChain %_ptr_StorageBuffer_float %resultMatrix %uint_0 %x_63
+ OpStore %93 %x_68 None
OpReturn
OpFunctionEnd
- %main_inner = OpFunction %void None %99
+ %main_inner = OpFunction %void None %97
%gl_GlobalInvocationID_param = OpFunctionParameter %v3uint
- %100 = OpLabel
+ %98 = OpLabel
OpStore %gl_GlobalInvocationID %gl_GlobalInvocationID_param None
- %101 = OpFunctionCall %void %main_1
+ %99 = OpFunctionCall %void %main_1
OpReturn
OpFunctionEnd
- %main = OpFunction %void None %77
- %103 = OpLabel
- %104 = OpLoad %v3uint %main_global_invocation_id_Input None
- %105 = OpFunctionCall %void %main_inner %104
+ %main = OpFunction %void None %75
+ %101 = OpLabel
+ %102 = OpLoad %v3uint %main_global_invocation_id_Input None
+ %103 = OpFunctionCall %void %main_inner %102
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/load/param/function/i32.wgsl.expected.spvasm b/test/tint/ptr_ref/load/param/function/i32.wgsl.expected.spvasm
index ae08f16..eae4113 100644
--- a/test/tint/ptr_ref/load/param/function/i32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/load/param/function/i32.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 16
+; Bound: 15
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -16,18 +16,17 @@
%_ptr_Function_int = OpTypePointer Function %int
%5 = OpTypeFunction %int %_ptr_Function_int
%void = OpTypeVoid
- %11 = OpTypeFunction %void
- %14 = OpConstantNull %int
+ %10 = OpTypeFunction %void
+ %13 = OpConstantNull %int
%func = OpFunction %int None %5
%pointer_root = OpFunctionParameter %_ptr_Function_int
%6 = OpLabel
- %7 = OpAccessChain %_ptr_Function_int %pointer_root
- %8 = OpLoad %int %7 None
- OpReturnValue %8
+ %7 = OpLoad %int %pointer_root None
+ OpReturnValue %7
OpFunctionEnd
- %main = OpFunction %void None %11
- %12 = OpLabel
- %F = OpVariable %_ptr_Function_int Function %14
+ %main = OpFunction %void None %10
+ %11 = OpLabel
+ %F = OpVariable %_ptr_Function_int Function %13
%r = OpFunctionCall %int %func %F
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/load/param/function/vec4_f32.wgsl.expected.spvasm b/test/tint/ptr_ref/load/param/function/vec4_f32.wgsl.expected.spvasm
index 5cbdd41..a7c31c3 100644
--- a/test/tint/ptr_ref/load/param/function/vec4_f32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/load/param/function/vec4_f32.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 17
+; Bound: 16
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -17,18 +17,17 @@
%_ptr_Function_v4float = OpTypePointer Function %v4float
%6 = OpTypeFunction %v4float %_ptr_Function_v4float
%void = OpTypeVoid
- %12 = OpTypeFunction %void
- %15 = OpConstantNull %v4float
+ %11 = OpTypeFunction %void
+ %14 = OpConstantNull %v4float
%func = OpFunction %v4float None %6
%pointer_root = OpFunctionParameter %_ptr_Function_v4float
%7 = OpLabel
- %8 = OpAccessChain %_ptr_Function_v4float %pointer_root
- %9 = OpLoad %v4float %8 None
- OpReturnValue %9
+ %8 = OpLoad %v4float %pointer_root None
+ OpReturnValue %8
OpFunctionEnd
- %main = OpFunction %void None %12
- %13 = OpLabel
- %F = OpVariable %_ptr_Function_v4float Function %15
+ %main = OpFunction %void None %11
+ %12 = OpLabel
+ %F = OpVariable %_ptr_Function_v4float Function %14
%r = OpFunctionCall %v4float %func %F
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/load/param/private/i32.wgsl.expected.spvasm b/test/tint/ptr_ref/load/param/private/i32.wgsl.expected.spvasm
index e7eff6c..ce2ab3f 100644
--- a/test/tint/ptr_ref/load/param/private/i32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/load/param/private/i32.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 15
+; Bound: 14
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -17,15 +17,14 @@
%P = OpVariable %_ptr_Private_int Private %4
%6 = OpTypeFunction %int
%void = OpTypeVoid
- %12 = OpTypeFunction %void
+ %11 = OpTypeFunction %void
%func = OpFunction %int None %6
%7 = OpLabel
- %8 = OpAccessChain %_ptr_Private_int %P
- %9 = OpLoad %int %8 None
- OpReturnValue %9
+ %8 = OpLoad %int %P None
+ OpReturnValue %8
OpFunctionEnd
- %main = OpFunction %void None %12
- %13 = OpLabel
+ %main = OpFunction %void None %11
+ %12 = OpLabel
%r = OpFunctionCall %int %func
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/load/param/private/vec4_f32.wgsl.expected.spvasm b/test/tint/ptr_ref/load/param/private/vec4_f32.wgsl.expected.spvasm
index ab8805e..a0ec93a 100644
--- a/test/tint/ptr_ref/load/param/private/vec4_f32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/load/param/private/vec4_f32.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 16
+; Bound: 15
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -18,15 +18,14 @@
%P = OpVariable %_ptr_Private_v4float Private %5
%7 = OpTypeFunction %v4float
%void = OpTypeVoid
- %13 = OpTypeFunction %void
+ %12 = OpTypeFunction %void
%func = OpFunction %v4float None %7
%8 = OpLabel
- %9 = OpAccessChain %_ptr_Private_v4float %P
- %10 = OpLoad %v4float %9 None
- OpReturnValue %10
+ %9 = OpLoad %v4float %P None
+ OpReturnValue %9
OpFunctionEnd
- %main = OpFunction %void None %13
- %14 = OpLabel
+ %main = OpFunction %void None %12
+ %13 = OpLabel
%r = OpFunctionCall %v4float %func
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/load/param/ptr.spvasm.expected.spvasm b/test/tint/ptr_ref/load/param/ptr.spvasm.expected.spvasm
index 0b27218..ba038db 100644
--- a/test/tint/ptr_ref/load/param/ptr.spvasm.expected.spvasm
+++ b/test/tint/ptr_ref/load/param/ptr.spvasm.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 23
+; Bound: 22
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -20,20 +20,19 @@
%_ptr_Function_int = OpTypePointer Function %int
%6 = OpTypeFunction %int %int %_ptr_Function_int
%void = OpTypeVoid
- %13 = OpTypeFunction %void
+ %12 = OpTypeFunction %void
%int_0 = OpConstant %int 0
%int_123 = OpConstant %int 123
%func = OpFunction %int None %6
%value = OpFunctionParameter %int
%pointer_root = OpFunctionParameter %_ptr_Function_int
%7 = OpLabel
- %8 = OpAccessChain %_ptr_Function_int %pointer_root
- %x_9 = OpLoad %int %8 None
- %10 = OpIAdd %int %value %x_9
- OpReturnValue %10
+ %x_9 = OpLoad %int %pointer_root None
+ %9 = OpIAdd %int %value %x_9
+ OpReturnValue %9
OpFunctionEnd
- %main_1 = OpFunction %void None %13
- %14 = OpLabel
+ %main_1 = OpFunction %void None %12
+ %13 = OpLabel
%i = OpVariable %_ptr_Function_int Function
OpStore %i %int_0
OpStore %i %int_123 None
@@ -41,8 +40,8 @@
%x_18 = OpFunctionCall %int %func %x_19 %i
OpReturn
OpFunctionEnd
- %main = OpFunction %void None %13
- %21 = OpLabel
- %22 = OpFunctionCall %void %main_1
+ %main = OpFunction %void None %12
+ %20 = OpLabel
+ %21 = OpFunctionCall %void %main_1
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/load/param/ptr.wgsl.expected.spvasm b/test/tint/ptr_ref/load/param/ptr.wgsl.expected.spvasm
index 4427bf4..4d68c3f 100644
--- a/test/tint/ptr_ref/load/param/ptr.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/load/param/ptr.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 19
+; Bound: 18
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -17,22 +17,21 @@
%_ptr_Function_int = OpTypePointer Function %int
%6 = OpTypeFunction %int %int %_ptr_Function_int
%void = OpTypeVoid
- %13 = OpTypeFunction %void
+ %12 = OpTypeFunction %void
%int_123 = OpConstant %int 123
%func = OpFunction %int None %6
%value = OpFunctionParameter %int
%pointer_root = OpFunctionParameter %_ptr_Function_int
%7 = OpLabel
- %8 = OpAccessChain %_ptr_Function_int %pointer_root
- %9 = OpLoad %int %8 None
- %10 = OpIAdd %int %value %9
- OpReturnValue %10
+ %8 = OpLoad %int %pointer_root None
+ %9 = OpIAdd %int %value %8
+ OpReturnValue %9
OpFunctionEnd
- %main = OpFunction %void None %13
- %14 = OpLabel
+ %main = OpFunction %void None %12
+ %13 = OpLabel
%i = OpVariable %_ptr_Function_int Function
OpStore %i %int_123
- %17 = OpLoad %int %i None
- %r = OpFunctionCall %int %func %17 %i
+ %16 = OpLoad %int %i None
+ %r = OpFunctionCall %int %func %16 %i
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/load/param/workgroup/i32.wgsl.expected.spvasm b/test/tint/ptr_ref/load/param/workgroup/i32.wgsl.expected.spvasm
index c9484bf..d49b167 100644
--- a/test/tint/ptr_ref/load/param/workgroup/i32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/load/param/workgroup/i32.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 32
+; Bound: 31
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -23,36 +23,35 @@
%main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
%8 = OpTypeFunction %int
%void = OpTypeVoid
- %15 = OpTypeFunction %void %uint
+ %14 = OpTypeFunction %void %uint
%uint_0 = OpConstant %uint 0
%bool = OpTypeBool
%int_0 = OpConstant %int 0
%uint_2 = OpConstant %uint 2
%uint_264 = OpConstant %uint 264
- %28 = OpTypeFunction %void
+ %27 = OpTypeFunction %void
%func = OpFunction %int None %8
%9 = OpLabel
- %10 = OpAccessChain %_ptr_Workgroup_int %S
- %11 = OpLoad %int %10 None
- OpReturnValue %11
+ %10 = OpLoad %int %S None
+ OpReturnValue %10
OpFunctionEnd
- %main_inner = OpFunction %void None %15
+ %main_inner = OpFunction %void None %14
%tint_local_index = OpFunctionParameter %uint
- %16 = OpLabel
- %17 = OpIEqual %bool %tint_local_index %uint_0
- OpSelectionMerge %20 None
- OpBranchConditional %17 %21 %20
- %21 = OpLabel
- OpStore %S %int_0 None
- OpBranch %20
+ %15 = OpLabel
+ %16 = OpIEqual %bool %tint_local_index %uint_0
+ OpSelectionMerge %19 None
+ OpBranchConditional %16 %20 %19
%20 = OpLabel
+ OpStore %S %int_0 None
+ OpBranch %19
+ %19 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
%r = OpFunctionCall %int %func
OpReturn
OpFunctionEnd
- %main = OpFunction %void None %28
- %29 = OpLabel
- %30 = OpLoad %uint %main_local_invocation_index_Input None
- %31 = OpFunctionCall %void %main_inner %30
+ %main = OpFunction %void None %27
+ %28 = OpLabel
+ %29 = OpLoad %uint %main_local_invocation_index_Input None
+ %30 = OpFunctionCall %void %main_inner %29
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/load/param/workgroup/vec4_f32.wgsl.expected.spvasm b/test/tint/ptr_ref/load/param/workgroup/vec4_f32.wgsl.expected.spvasm
index 1b0369f..2df5ed4 100644
--- a/test/tint/ptr_ref/load/param/workgroup/vec4_f32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/load/param/workgroup/vec4_f32.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 33
+; Bound: 32
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -24,36 +24,35 @@
%main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
%9 = OpTypeFunction %v4float
%void = OpTypeVoid
- %16 = OpTypeFunction %void %uint
+ %15 = OpTypeFunction %void %uint
%uint_0 = OpConstant %uint 0
%bool = OpTypeBool
- %23 = OpConstantNull %v4float
+ %22 = OpConstantNull %v4float
%uint_2 = OpConstant %uint 2
%uint_264 = OpConstant %uint 264
- %29 = OpTypeFunction %void
+ %28 = OpTypeFunction %void
%func = OpFunction %v4float None %9
%10 = OpLabel
- %11 = OpAccessChain %_ptr_Workgroup_v4float %S
- %12 = OpLoad %v4float %11 None
- OpReturnValue %12
+ %11 = OpLoad %v4float %S None
+ OpReturnValue %11
OpFunctionEnd
- %main_inner = OpFunction %void None %16
+ %main_inner = OpFunction %void None %15
%tint_local_index = OpFunctionParameter %uint
- %17 = OpLabel
- %18 = OpIEqual %bool %tint_local_index %uint_0
- OpSelectionMerge %21 None
- OpBranchConditional %18 %22 %21
- %22 = OpLabel
- OpStore %S %23 None
- OpBranch %21
+ %16 = OpLabel
+ %17 = OpIEqual %bool %tint_local_index %uint_0
+ OpSelectionMerge %20 None
+ OpBranchConditional %17 %21 %20
%21 = OpLabel
+ OpStore %S %22 None
+ OpBranch %20
+ %20 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
%r = OpFunctionCall %v4float %func
OpReturn
OpFunctionEnd
- %main = OpFunction %void None %29
- %30 = OpLabel
- %31 = OpLoad %uint %main_local_invocation_index_Input None
- %32 = OpFunctionCall %void %main_inner %31
+ %main = OpFunction %void None %28
+ %29 = OpLabel
+ %30 = OpLoad %uint %main_local_invocation_index_Input None
+ %31 = OpFunctionCall %void %main_inner %30
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/store/param/function/i32.wgsl.expected.spvasm b/test/tint/ptr_ref/store/param/function/i32.wgsl.expected.spvasm
index b203bc8..5868f99 100644
--- a/test/tint/ptr_ref/store/param/function/i32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/store/param/function/i32.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 16
+; Bound: 15
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -16,18 +16,17 @@
%_ptr_Function_int = OpTypePointer Function %int
%6 = OpTypeFunction %void %_ptr_Function_int
%int_42 = OpConstant %int 42
- %11 = OpTypeFunction %void
- %14 = OpConstantNull %int
+ %10 = OpTypeFunction %void
+ %13 = OpConstantNull %int
%func = OpFunction %void None %6
%pointer_root = OpFunctionParameter %_ptr_Function_int
%7 = OpLabel
- %8 = OpAccessChain %_ptr_Function_int %pointer_root
- OpStore %8 %int_42 None
+ OpStore %pointer_root %int_42 None
OpReturn
OpFunctionEnd
- %main = OpFunction %void None %11
- %12 = OpLabel
- %F = OpVariable %_ptr_Function_int Function %14
- %15 = OpFunctionCall %void %func %F
+ %main = OpFunction %void None %10
+ %11 = OpLabel
+ %F = OpVariable %_ptr_Function_int Function %13
+ %14 = OpFunctionCall %void %func %F
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/store/param/function/vec4_f32.wgsl.expected.spvasm b/test/tint/ptr_ref/store/param/function/vec4_f32.wgsl.expected.spvasm
index c957b1f..5283e5f 100644
--- a/test/tint/ptr_ref/store/param/function/vec4_f32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/store/param/function/vec4_f32.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 16
+; Bound: 15
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -16,18 +16,17 @@
%v4float = OpTypeVector %float 4
%_ptr_Function_v4float = OpTypePointer Function %v4float
%7 = OpTypeFunction %void %_ptr_Function_v4float
- %10 = OpConstantNull %v4float
- %12 = OpTypeFunction %void
+ %9 = OpConstantNull %v4float
+ %11 = OpTypeFunction %void
%func = OpFunction %void None %7
%pointer_root = OpFunctionParameter %_ptr_Function_v4float
%8 = OpLabel
- %9 = OpAccessChain %_ptr_Function_v4float %pointer_root
- OpStore %9 %10 None
+ OpStore %pointer_root %9 None
OpReturn
OpFunctionEnd
- %main = OpFunction %void None %12
- %13 = OpLabel
- %F = OpVariable %_ptr_Function_v4float Function %10
- %15 = OpFunctionCall %void %func %F
+ %main = OpFunction %void None %11
+ %12 = OpLabel
+ %F = OpVariable %_ptr_Function_v4float Function %9
+ %14 = OpFunctionCall %void %func %F
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/store/param/private/i32.wgsl.expected.spvasm b/test/tint/ptr_ref/store/param/private/i32.wgsl.expected.spvasm
index 2312504..4ac92d1 100644
--- a/test/tint/ptr_ref/store/param/private/i32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/store/param/private/i32.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 14
+; Bound: 13
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -19,12 +19,11 @@
%int_42 = OpConstant %int 42
%func = OpFunction %void None %7
%8 = OpLabel
- %9 = OpAccessChain %_ptr_Private_int %P
- OpStore %9 %int_42 None
+ OpStore %P %int_42 None
OpReturn
OpFunctionEnd
%main = OpFunction %void None %7
- %12 = OpLabel
- %13 = OpFunctionCall %void %func
+ %11 = OpLabel
+ %12 = OpFunctionCall %void %func
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/store/param/private/vec4_f32.wgsl.expected.spvasm b/test/tint/ptr_ref/store/param/private/vec4_f32.wgsl.expected.spvasm
index e9a3cea..919e0f4 100644
--- a/test/tint/ptr_ref/store/param/private/vec4_f32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/store/param/private/vec4_f32.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 14
+; Bound: 13
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -19,12 +19,11 @@
%8 = OpTypeFunction %void
%func = OpFunction %void None %8
%9 = OpLabel
- %10 = OpAccessChain %_ptr_Private_v4float %P
- OpStore %10 %5 None
+ OpStore %P %5 None
OpReturn
OpFunctionEnd
%main = OpFunction %void None %8
- %12 = OpLabel
- %13 = OpFunctionCall %void %func
+ %11 = OpLabel
+ %12 = OpFunctionCall %void %func
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/store/param/ptr.wgsl.expected.spvasm b/test/tint/ptr_ref/store/param/ptr.wgsl.expected.spvasm
index e48ce84..c15e975 100644
--- a/test/tint/ptr_ref/store/param/ptr.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/store/param/ptr.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 16
+; Bound: 15
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -16,20 +16,19 @@
%int = OpTypeInt 32 1
%_ptr_Function_int = OpTypePointer Function %int
%7 = OpTypeFunction %void %int %_ptr_Function_int
- %11 = OpTypeFunction %void
+ %10 = OpTypeFunction %void
%int_123 = OpConstant %int 123
%func = OpFunction %void None %7
%value = OpFunctionParameter %int
%pointer_root = OpFunctionParameter %_ptr_Function_int
%8 = OpLabel
- %9 = OpAccessChain %_ptr_Function_int %pointer_root
- OpStore %9 %value None
+ OpStore %pointer_root %value None
OpReturn
OpFunctionEnd
- %main = OpFunction %void None %11
- %12 = OpLabel
+ %main = OpFunction %void None %10
+ %11 = OpLabel
%i = OpVariable %_ptr_Function_int Function
OpStore %i %int_123
- %15 = OpFunctionCall %void %func %int_123 %i
+ %14 = OpFunctionCall %void %func %int_123 %i
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/store/param/workgroup/i32.wgsl.expected.spvasm b/test/tint/ptr_ref/store/param/workgroup/i32.wgsl.expected.spvasm
index caef1fe..b34d24c 100644
--- a/test/tint/ptr_ref/store/param/workgroup/i32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/store/param/workgroup/i32.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 31
+; Bound: 30
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -23,7 +23,7 @@
%void = OpTypeVoid
%9 = OpTypeFunction %void
%int_42 = OpConstant %int 42
- %15 = OpTypeFunction %void %uint
+ %14 = OpTypeFunction %void %uint
%uint_0 = OpConstant %uint 0
%bool = OpTypeBool
%int_0 = OpConstant %int 0
@@ -31,27 +31,26 @@
%uint_264 = OpConstant %uint 264
%func = OpFunction %void None %9
%10 = OpLabel
- %11 = OpAccessChain %_ptr_Workgroup_int %S
- OpStore %11 %int_42 None
+ OpStore %S %int_42 None
OpReturn
OpFunctionEnd
- %main_inner = OpFunction %void None %15
+ %main_inner = OpFunction %void None %14
%tint_local_index = OpFunctionParameter %uint
- %16 = OpLabel
- %17 = OpIEqual %bool %tint_local_index %uint_0
- OpSelectionMerge %20 None
- OpBranchConditional %17 %21 %20
- %21 = OpLabel
- OpStore %S %int_0 None
- OpBranch %20
+ %15 = OpLabel
+ %16 = OpIEqual %bool %tint_local_index %uint_0
+ OpSelectionMerge %19 None
+ OpBranchConditional %16 %20 %19
%20 = OpLabel
+ OpStore %S %int_0 None
+ OpBranch %19
+ %19 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
- %26 = OpFunctionCall %void %func
+ %25 = OpFunctionCall %void %func
OpReturn
OpFunctionEnd
%main = OpFunction %void None %9
- %28 = OpLabel
- %29 = OpLoad %uint %main_local_invocation_index_Input None
- %30 = OpFunctionCall %void %main_inner %29
+ %27 = OpLabel
+ %28 = OpLoad %uint %main_local_invocation_index_Input None
+ %29 = OpFunctionCall %void %main_inner %28
OpReturn
OpFunctionEnd
diff --git a/test/tint/ptr_ref/store/param/workgroup/vec4_f32.wgsl.expected.spvasm b/test/tint/ptr_ref/store/param/workgroup/vec4_f32.wgsl.expected.spvasm
index bff592d..1acbb95 100644
--- a/test/tint/ptr_ref/store/param/workgroup/vec4_f32.wgsl.expected.spvasm
+++ b/test/tint/ptr_ref/store/param/workgroup/vec4_f32.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
-; Bound: 31
+; Bound: 30
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -23,35 +23,34 @@
%main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
%void = OpTypeVoid
%10 = OpTypeFunction %void
- %13 = OpConstantNull %v4float
- %16 = OpTypeFunction %void %uint
+ %12 = OpConstantNull %v4float
+ %15 = OpTypeFunction %void %uint
%uint_0 = OpConstant %uint 0
%bool = OpTypeBool
%uint_2 = OpConstant %uint 2
%uint_264 = OpConstant %uint 264
%func = OpFunction %void None %10
%11 = OpLabel
- %12 = OpAccessChain %_ptr_Workgroup_v4float %S
- OpStore %12 %13 None
+ OpStore %S %12 None
OpReturn
OpFunctionEnd
- %main_inner = OpFunction %void None %16
+ %main_inner = OpFunction %void None %15
%tint_local_index = OpFunctionParameter %uint
- %17 = OpLabel
- %18 = OpIEqual %bool %tint_local_index %uint_0
- OpSelectionMerge %21 None
- OpBranchConditional %18 %22 %21
- %22 = OpLabel
- OpStore %S %13 None
- OpBranch %21
+ %16 = OpLabel
+ %17 = OpIEqual %bool %tint_local_index %uint_0
+ OpSelectionMerge %20 None
+ OpBranchConditional %17 %21 %20
%21 = OpLabel
+ OpStore %S %12 None
+ OpBranch %20
+ %20 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
- %26 = OpFunctionCall %void %func
+ %25 = OpFunctionCall %void %func
OpReturn
OpFunctionEnd
%main = OpFunction %void None %10
- %28 = OpLabel
- %29 = OpLoad %uint %main_local_invocation_index_Input None
- %30 = OpFunctionCall %void %main_inner %29
+ %27 = OpLabel
+ %28 = OpLoad %uint %main_local_invocation_index_Input None
+ %29 = OpFunctionCall %void %main_inner %28
OpReturn
OpFunctionEnd