Factor out std/crc32/common_up_arm_crc32.wuffs
diff --git a/std/crc32/common_crc32.wuffs b/std/crc32/common_crc32.wuffs
index ee3470e..aaec989 100644
--- a/std/crc32/common_crc32.wuffs
+++ b/std/crc32/common_crc32.wuffs
@@ -69,29 +69,6 @@
this.state = 0xFFFF_FFFF ^ s
}
-pri func ieee_hasher.up_arm_crc32!(x: slice base.u8),
- choose cpu_arch >= arm_crc32,
-{
- var s : base.arm_crc32_u32
- var p : slice base.u8
-
- s = s.create(a: 0xFFFF_FFFF ^ this.state)
-
- // Align to a 16-byte boundary.
- while (args.x.length() > 0) and ((15 & args.x.uintptr_low_12_bits()) <> 0) {
- s = s._crc32b(b: args.x[0])
- args.x = args.x[1 ..]
- } endwhile
-
- iterate (p = args.x)(length: 8, advance: 8, unroll: 16) {
- s = s._crc32d(b: p.peek_u64le())
- } else (length: 1, advance: 1, unroll: 1) {
- s = s._crc32b(b: p[0])
- }
-
- this.state = 0xFFFF_FFFF ^ s.value()
-}
-
// The table below was created by script/print-crc32-magic-numbers.go.
pri const IEEE_TABLE : array[16] array[256] base.u32 = [[
diff --git a/std/crc32/common_up_arm_crc32.wuffs b/std/crc32/common_up_arm_crc32.wuffs
new file mode 100644
index 0000000..fcd5d36
--- /dev/null
+++ b/std/crc32/common_up_arm_crc32.wuffs
@@ -0,0 +1,36 @@
+// Copyright 2021 The Wuffs Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+pri func ieee_hasher.up_arm_crc32!(x: slice base.u8),
+ choose cpu_arch >= arm_crc32,
+{
+ var s : base.arm_crc32_u32
+ var p : slice base.u8
+
+ s = s.create(a: 0xFFFF_FFFF ^ this.state)
+
+ // Align to a 16-byte boundary.
+ while (args.x.length() > 0) and ((15 & args.x.uintptr_low_12_bits()) <> 0) {
+ s = s._crc32b(b: args.x[0])
+ args.x = args.x[1 ..]
+ } endwhile
+
+ iterate (p = args.x)(length: 8, advance: 8, unroll: 16) {
+ s = s._crc32d(b: p.peek_u64le())
+ } else (length: 1, advance: 1, unroll: 1) {
+ s = s._crc32b(b: p[0])
+ }
+
+ this.state = 0xFFFF_FFFF ^ s.value()
+}