hc
2023-12-08 01573e231f18eb2d99162747186f59511f56b64d
kernel/include/math-emu/op-2.h
....@@ -31,61 +31,56 @@
3131 #define _FP_FRAC_HIGH_2(X) (X##_f1)
3232 #define _FP_FRAC_LOW_2(X) (X##_f0)
3333 #define _FP_FRAC_WORD_2(X,w) (X##_f##w)
34
+#define _FP_FRAC_SLL_2(X, N) ( \
35
+ (void) (((N) < _FP_W_TYPE_SIZE) \
36
+ ? ({ \
37
+ if (__builtin_constant_p(N) && (N) == 1) { \
38
+ X##_f1 = X##_f1 + X##_f1 + \
39
+ (((_FP_WS_TYPE) (X##_f0)) < 0); \
40
+ X##_f0 += X##_f0; \
41
+ } else { \
42
+ X##_f1 = X##_f1 << (N) | X##_f0 >> \
43
+ (_FP_W_TYPE_SIZE - (N)); \
44
+ X##_f0 <<= (N); \
45
+ } \
46
+ 0; \
47
+ }) \
48
+ : ({ \
49
+ X##_f1 = X##_f0 << ((N) - _FP_W_TYPE_SIZE); \
50
+ X##_f0 = 0; \
51
+ })))
3452
35
-#define _FP_FRAC_SLL_2(X,N) \
36
- do { \
37
- if ((N) < _FP_W_TYPE_SIZE) \
38
- { \
39
- if (__builtin_constant_p(N) && (N) == 1) \
40
- { \
41
- X##_f1 = X##_f1 + X##_f1 + (((_FP_WS_TYPE)(X##_f0)) < 0); \
42
- X##_f0 += X##_f0; \
43
- } \
44
- else \
45
- { \
46
- X##_f1 = X##_f1 << (N) | X##_f0 >> (_FP_W_TYPE_SIZE - (N)); \
47
- X##_f0 <<= (N); \
48
- } \
49
- } \
50
- else \
51
- { \
52
- X##_f1 = X##_f0 << ((N) - _FP_W_TYPE_SIZE); \
53
- X##_f0 = 0; \
54
- } \
55
- } while (0)
5653
57
-#define _FP_FRAC_SRL_2(X,N) \
58
- do { \
59
- if ((N) < _FP_W_TYPE_SIZE) \
60
- { \
61
- X##_f0 = X##_f0 >> (N) | X##_f1 << (_FP_W_TYPE_SIZE - (N)); \
62
- X##_f1 >>= (N); \
63
- } \
64
- else \
65
- { \
66
- X##_f0 = X##_f1 >> ((N) - _FP_W_TYPE_SIZE); \
67
- X##_f1 = 0; \
68
- } \
69
- } while (0)
54
+#define _FP_FRAC_SRL_2(X, N) ( \
55
+ (void) (((N) < _FP_W_TYPE_SIZE) \
56
+ ? ({ \
57
+ X##_f0 = X##_f0 >> (N) | X##_f1 << (_FP_W_TYPE_SIZE - (N)); \
58
+ X##_f1 >>= (N); \
59
+ }) \
60
+ : ({ \
61
+ X##_f0 = X##_f1 >> ((N) - _FP_W_TYPE_SIZE); \
62
+ X##_f1 = 0; \
63
+ })))
64
+
7065
7166 /* Right shift with sticky-lsb. */
72
-#define _FP_FRAC_SRS_2(X,N,sz) \
73
- do { \
74
- if ((N) < _FP_W_TYPE_SIZE) \
75
- { \
76
- X##_f0 = (X##_f1 << (_FP_W_TYPE_SIZE - (N)) | X##_f0 >> (N) | \
77
- (__builtin_constant_p(N) && (N) == 1 \
78
- ? X##_f0 & 1 \
79
- : (X##_f0 << (_FP_W_TYPE_SIZE - (N))) != 0)); \
80
- X##_f1 >>= (N); \
81
- } \
82
- else \
83
- { \
84
- X##_f0 = (X##_f1 >> ((N) - _FP_W_TYPE_SIZE) | \
85
- (((X##_f1 << (2*_FP_W_TYPE_SIZE - (N))) | X##_f0) != 0)); \
86
- X##_f1 = 0; \
87
- } \
88
- } while (0)
67
+#define _FP_FRAC_SRS_2(X, N, sz) ( \
68
+ (void) (((N) < _FP_W_TYPE_SIZE) \
69
+ ? ({ \
70
+ X##_f0 = (X##_f1 << (_FP_W_TYPE_SIZE - (N)) | X##_f0 >> (N) \
71
+ | (__builtin_constant_p(N) && (N) == 1 \
72
+ ? X##_f0 & 1 \
73
+ : (X##_f0 << (_FP_W_TYPE_SIZE - (N))) != 0)); \
74
+ X##_f1 >>= (N); \
75
+ }) \
76
+ : ({ \
77
+ X##_f0 = (X##_f1 >> ((N) - _FP_W_TYPE_SIZE) \
78
+ | ((((N) == _FP_W_TYPE_SIZE \
79
+ ? 0 \
80
+ : (X##_f1 << (2*_FP_W_TYPE_SIZE - (N)))) \
81
+ | X##_f0) != 0)); \
82
+ X##_f1 = 0; \
83
+ })))
8984
9085 #define _FP_FRAC_ADDI_2(X,I) \
9186 __FP_FRAC_ADDI_2(X##_f1, X##_f0, I)
....@@ -572,16 +567,13 @@
572567 */
573568
574569 #define _FP_FRAC_ASSEMBLE_2(r, X, rsize) \
575
- do { \
576
- if (rsize <= _FP_W_TYPE_SIZE) \
577
- r = X##_f0; \
578
- else \
579
- { \
580
- r = X##_f1; \
581
- r <<= _FP_W_TYPE_SIZE; \
582
- r += X##_f0; \
583
- } \
584
- } while (0)
570
+ (void) (((rsize) <= _FP_W_TYPE_SIZE) \
571
+ ? ({ (r) = X##_f0; }) \
572
+ : ({ \
573
+ (r) = X##_f1; \
574
+ (r) <<= _FP_W_TYPE_SIZE; \
575
+ (r) += X##_f0; \
576
+ }))
585577
586578 #define _FP_FRAC_DISASSEMBLE_2(X, r, rsize) \
587579 do { \