Skip to content

Commit ad18078

Browse files
committed
forceEval() -> doNotOptimizeAway()
1 parent 0bd53dd commit ad18078

15 files changed

+41
-41
lines changed

lib/std/crypto/benchmark.zig

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ pub fn benchmarkHash(comptime Hash: anytype, comptime bytes: comptime_int) !u64
4747
while (offset < bytes) : (offset += block.len) {
4848
h.update(block[0..]);
4949
}
50-
mem.forceEval(&h);
50+
mem.doNotOptimizeAway(&h);
5151
const end = timer.read();
5252

5353
const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
@@ -82,7 +82,7 @@ pub fn benchmarkMac(comptime Mac: anytype, comptime bytes: comptime_int) !u64 {
8282
const start = timer.lap();
8383
while (offset < bytes) : (offset += in.len) {
8484
Mac.create(mac[0..], in[0..], key[0..]);
85-
mem.forceEval(&mac);
85+
mem.doNotOptimizeAway(&mac);
8686
}
8787
const end = timer.read();
8888

@@ -109,7 +109,7 @@ pub fn benchmarkKeyExchange(comptime DhKeyExchange: anytype, comptime exchange_c
109109
var i: usize = 0;
110110
while (i < exchange_count) : (i += 1) {
111111
_ = DhKeyExchange.create(out[0..], out[0..], in[0..]);
112-
mem.forceEval(&out);
112+
mem.doNotOptimizeAway(&out);
113113
}
114114
}
115115
const end = timer.read();
@@ -134,7 +134,7 @@ pub fn benchmarkSignature(comptime Signature: anytype, comptime signatures_count
134134
var i: usize = 0;
135135
while (i < signatures_count) : (i += 1) {
136136
const s = try Signature.sign(&msg, key_pair, null);
137-
mem.forceEval(&s);
137+
mem.doNotOptimizeAway(&s);
138138
}
139139
}
140140
const end = timer.read();
@@ -170,7 +170,7 @@ pub fn benchmarkAead(comptime Aead: anytype, comptime bytes: comptime_int) !u64
170170
Aead.encrypt(in[0..], tag[0..], in[0..], &[_]u8{}, nonce, key);
171171
Aead.decrypt(in[0..], in[0..], tag, &[_]u8{}, nonce, key) catch unreachable;
172172
}
173-
mem.forceEval(&in);
173+
mem.doNotOptimizeAway(&in);
174174
const end = timer.read();
175175

176176
const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;

lib/std/math.zig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ pub fn approxEq(comptime T: type, x: T, y: T, epsilon: T) bool {
109109
return fabs(x - y) < epsilon;
110110
}
111111

112-
pub fn forceEval(value: anytype) void {
113-
mem.forceEval(value);
112+
pub fn doNotOptimizeAway(value: anytype) void {
113+
mem.doNotOptimizeAway(value);
114114
}
115115

116116
pub fn raiseInvalid() void {

lib/std/math/asinh.zig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ fn asinh32(x: f32) f32 {
5656
}
5757
// |x| < 0x1p-12, inexact if x != 0
5858
else {
59-
math.forceEval(x + 0x1.0p120);
59+
math.doNotOptimizeAway(x + 0x1.0p120);
6060
}
6161

6262
return if (s != 0) -rx else rx;
@@ -87,7 +87,7 @@ fn asinh64(x: f64) f64 {
8787
}
8888
// |x| < 0x1p-12, inexact if x != 0
8989
else {
90-
math.forceEval(x + 0x1.0p120);
90+
math.doNotOptimizeAway(x + 0x1.0p120);
9191
}
9292

9393
return if (s != 0) -rx else rx;

lib/std/math/atan.zig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ fn atan32(x_: f32) f32 {
7272
// |x| < 2^(-12)
7373
if (ix < 0x39800000) {
7474
if (ix < 0x00800000) {
75-
math.forceEval(x * x);
75+
math.doNotOptimizeAway(x * x);
7676
}
7777
return x;
7878
}
@@ -170,7 +170,7 @@ fn atan64(x_: f64) f64 {
170170
// |x| < 2^(-27)
171171
if (ix < 0x3E400000) {
172172
if (ix < 0x00100000) {
173-
math.forceEval(@floatCast(f32, x));
173+
math.doNotOptimizeAway(@floatCast(f32, x));
174174
}
175175
return x;
176176
}

lib/std/math/atanh.zig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ fn atanh_32(x: f32) f32 {
4545
if (u < 0x3F800000 - (32 << 23)) {
4646
// underflow
4747
if (u < (1 << 23)) {
48-
math.forceEval(y * y);
48+
math.doNotOptimizeAway(y * y);
4949
}
5050
}
5151
// |x| < 0.5
@@ -74,7 +74,7 @@ fn atanh_64(x: f64) f64 {
7474
if (e < 0x3FF - 32) {
7575
// underflow
7676
if (e == 0) {
77-
math.forceEval(@floatCast(f32, y));
77+
math.doNotOptimizeAway(@floatCast(f32, y));
7878
}
7979
}
8080
// |x| < 0.5

lib/std/math/ceil.zig

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,14 @@ fn ceil32(x: f32) f32 {
4747
if (u & m == 0) {
4848
return x;
4949
}
50-
math.forceEval(x + 0x1.0p120);
50+
math.doNotOptimizeAway(x + 0x1.0p120);
5151
if (u >> 31 == 0) {
5252
u += m;
5353
}
5454
u &= ~m;
5555
return @bitCast(f32, u);
5656
} else {
57-
math.forceEval(x + 0x1.0p120);
57+
math.doNotOptimizeAway(x + 0x1.0p120);
5858
if (u >> 31 != 0) {
5959
return -0.0;
6060
} else {
@@ -79,7 +79,7 @@ fn ceil64(x: f64) f64 {
7979
}
8080

8181
if (e <= 0x3FF - 1) {
82-
math.forceEval(y);
82+
math.doNotOptimizeAway(y);
8383
if (u >> 63 != 0) {
8484
return -0.0;
8585
} else {
@@ -106,7 +106,7 @@ fn ceil128(x: f128) f128 {
106106
}
107107

108108
if (e <= 0x3FFF - 1) {
109-
math.forceEval(y);
109+
math.doNotOptimizeAway(y);
110110
if (u >> 127 != 0) {
111111
return -0.0;
112112
} else {

lib/std/math/exp.zig

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ fn exp32(x_: f32) f32 {
5656
return x * 0x1.0p127;
5757
}
5858
if (sign != 0) {
59-
math.forceEval(-0x1.0p-149 / x); // overflow
59+
math.doNotOptimizeAway(-0x1.0p-149 / x); // overflow
6060
// x <= -103.972084
6161
if (hx >= 0x42CFF1B5) {
6262
return 0;
@@ -88,7 +88,7 @@ fn exp32(x_: f32) f32 {
8888
hi = x;
8989
lo = 0;
9090
} else {
91-
math.forceEval(0x1.0p127 + x); // inexact
91+
math.doNotOptimizeAway(0x1.0p127 + x); // inexact
9292
return 1 + x;
9393
}
9494

@@ -139,7 +139,7 @@ fn exp64(x_: f64) f64 {
139139
}
140140
if (x < -708.39641853226410622) {
141141
// underflow if x != -inf
142-
// math.forceEval(@as(f32, -0x1.0p-149 / x));
142+
// math.doNotOptimizeAway(@as(f32, -0x1.0p-149 / x));
143143
if (x < -745.13321910194110842) {
144144
return 0;
145145
}
@@ -172,7 +172,7 @@ fn exp64(x_: f64) f64 {
172172
lo = 0;
173173
} else {
174174
// inexact if x != 0
175-
// math.forceEval(0x1.0p1023 + x);
175+
// math.doNotOptimizeAway(0x1.0p1023 + x);
176176
return 1 + x;
177177
}
178178

lib/std/math/exp2.zig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ fn exp2_32(x: f32) f32 {
7070
// x < -126
7171
if (u >= 0x80000000) {
7272
if (u >= 0xC3160000 or u & 0x000FFFF != 0) {
73-
math.forceEval(-0x1.0p-149 / x);
73+
math.doNotOptimizeAway(-0x1.0p-149 / x);
7474
}
7575
// x <= -150
7676
if (u >= 0x3160000) {
@@ -393,7 +393,7 @@ fn exp2_64(x: f64) f64 {
393393
if (ux >> 63 != 0) {
394394
// underflow
395395
if (x <= -1075 or x - 0x1.0p52 + 0x1.0p52 != x) {
396-
math.forceEval(@floatCast(f32, -0x1.0p-149 / x));
396+
math.doNotOptimizeAway(@floatCast(f32, -0x1.0p-149 / x));
397397
}
398398
if (x <= -1075) {
399399
return 0;

lib/std/math/expm1.zig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ fn expm1_32(x_: f32) f32 {
106106
// |x| < 2^(-25)
107107
else if (hx < 0x33000000) {
108108
if (hx < 0x00800000) {
109-
math.forceEval(x * x);
109+
math.doNotOptimizeAway(x * x);
110110
}
111111
return x;
112112
} else {
@@ -237,7 +237,7 @@ fn expm1_64(x_: f64) f64 {
237237
// |x| < 2^(-54)
238238
else if (hx < 0x3C900000) {
239239
if (hx < 0x00100000) {
240-
math.forceEval(@floatCast(f32, x));
240+
math.doNotOptimizeAway(@floatCast(f32, x));
241241
}
242242
return x;
243243
} else {

lib/std/math/floor.zig

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,13 @@ fn floor16(x: f16) f16 {
5050
if (u & m == 0) {
5151
return x;
5252
}
53-
math.forceEval(x + 0x1.0p120);
53+
math.doNotOptimizeAway(x + 0x1.0p120);
5454
if (u >> 15 != 0) {
5555
u += m;
5656
}
5757
return @bitCast(f16, u & ~m);
5858
} else {
59-
math.forceEval(x + 0x1.0p120);
59+
math.doNotOptimizeAway(x + 0x1.0p120);
6060
if (u >> 15 == 0) {
6161
return 0.0;
6262
} else {
@@ -84,13 +84,13 @@ fn floor32(x: f32) f32 {
8484
if (u & m == 0) {
8585
return x;
8686
}
87-
math.forceEval(x + 0x1.0p120);
87+
math.doNotOptimizeAway(x + 0x1.0p120);
8888
if (u >> 31 != 0) {
8989
u += m;
9090
}
9191
return @bitCast(f32, u & ~m);
9292
} else {
93-
math.forceEval(x + 0x1.0p120);
93+
math.doNotOptimizeAway(x + 0x1.0p120);
9494
if (u >> 31 == 0) {
9595
return 0.0;
9696
} else {
@@ -115,7 +115,7 @@ fn floor64(x: f64) f64 {
115115
}
116116

117117
if (e <= 0x3FF - 1) {
118-
math.forceEval(y);
118+
math.doNotOptimizeAway(y);
119119
if (u >> 63 != 0) {
120120
return -1.0;
121121
} else {
@@ -142,7 +142,7 @@ fn floor128(x: f128) f128 {
142142
}
143143

144144
if (e <= 0x3FFF - 1) {
145-
math.forceEval(y);
145+
math.doNotOptimizeAway(y);
146146
if (u >> 127 != 0) {
147147
return -1.0;
148148
} else {

lib/std/math/log1p.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ fn log1p_32(x: f32) f32 {
6262
if ((ix << 1) < (0x33800000 << 1)) {
6363
// underflow if subnormal
6464
if (ix & 0x7F800000 == 0) {
65-
math.forceEval(x * x);
65+
math.doNotOptimizeAway(x * x);
6666
}
6767
return x;
6868
}

lib/std/math/round.zig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ fn round32(x_: f32) f32 {
4343
x = -x;
4444
}
4545
if (e < 0x7F - 1) {
46-
math.forceEval(x + math.f32_toint);
46+
math.doNotOptimizeAway(x + math.f32_toint);
4747
return 0 * @bitCast(f32, u);
4848
}
4949

@@ -76,7 +76,7 @@ fn round64(x_: f64) f64 {
7676
x = -x;
7777
}
7878
if (e < 0x3ff - 1) {
79-
math.forceEval(x + math.f64_toint);
79+
math.doNotOptimizeAway(x + math.f64_toint);
8080
return 0 * @bitCast(f64, u);
8181
}
8282

@@ -109,7 +109,7 @@ fn round128(x_: f128) f128 {
109109
x = -x;
110110
}
111111
if (e < 0x3FFF - 1) {
112-
math.forceEval(x + math.f64_toint);
112+
math.doNotOptimizeAway(x + math.f64_toint);
113113
return 0 * @bitCast(f128, u);
114114
}
115115

lib/std/math/tanh.zig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ fn tanh32(x: f32) f32 {
6767
}
6868
// |x| is subnormal
6969
else {
70-
math.forceEval(x * x);
70+
math.doNotOptimizeAway(x * x);
7171
t = x;
7272
}
7373

@@ -112,7 +112,7 @@ fn tanh64(x: f64) f64 {
112112
}
113113
// |x| is subnormal
114114
else {
115-
math.forceEval(@floatCast(f32, x));
115+
math.doNotOptimizeAway(@floatCast(f32, x));
116116
t = x;
117117
}
118118

lib/std/math/trunc.zig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ fn trunc32(x: f32) f32 {
4646
if (u & m == 0) {
4747
return x;
4848
} else {
49-
math.forceEval(x + 0x1p120);
49+
math.doNotOptimizeAway(x + 0x1p120);
5050
return @bitCast(f32, u & ~m);
5151
}
5252
}
@@ -67,7 +67,7 @@ fn trunc64(x: f64) f64 {
6767
if (u & m == 0) {
6868
return x;
6969
} else {
70-
math.forceEval(x + 0x1p120);
70+
math.doNotOptimizeAway(x + 0x1p120);
7171
return @bitCast(f64, u & ~m);
7272
}
7373
}
@@ -88,7 +88,7 @@ fn trunc128(x: f128) f128 {
8888
if (u & m == 0) {
8989
return x;
9090
} else {
91-
math.forceEval(x + 0x1p120);
91+
math.doNotOptimizeAway(x + 0x1p120);
9292
return @bitCast(f128, u & ~m);
9393
}
9494
}

lib/std/mem.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2161,7 +2161,7 @@ pub fn alignForwardGeneric(comptime T: type, addr: T, alignment: T) T {
21612161
/// Force an evaluation of the expression; this tries to prevent
21622162
/// the compiler from optimizing the computation away even if the
21632163
/// result eventually gets discarded.
2164-
pub fn forceEval(val: anytype) void {
2164+
pub fn doNotOptimizeAway(val: anytype) void {
21652165
asm volatile (""
21662166
:
21672167
: [val] "rm" (val)

0 commit comments

Comments
 (0)