target/loongarch: Move simply DO_XX marcos togther
Signed-off-by: Song Gao <gaosong@loongson.cn> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20230914022645.1151356-57-gaosong@loongson.cn>
This commit is contained in:
		
							parent
							
								
									4a26512f01
								
							
						
					
					
						commit
						c7aa330903
					
				| @ -30,4 +30,46 @@ | ||||
| #define Q(x)  Q[x] | ||||
| #endif /* HOST_BIG_ENDIAN */ | ||||
| 
 | ||||
| #define DO_ADD(a, b)  (a + b) | ||||
| #define DO_SUB(a, b)  (a - b) | ||||
| #define DO_VAVG(a, b)  ((a >> 1) + (b >> 1) + (a & b & 1)) | ||||
| #define DO_VAVGR(a, b) ((a >> 1) + (b >> 1) + ((a | b) & 1)) | ||||
| #define DO_VABSD(a, b)  ((a > b) ? (a -b) : (b-a)) | ||||
| #define DO_VABS(a)  ((a < 0) ? (-a) : (a)) | ||||
| #define DO_MIN(a, b) (a < b ? a : b) | ||||
| #define DO_MAX(a, b) (a > b ? a : b) | ||||
| #define DO_MUL(a, b) (a * b) | ||||
| #define DO_MADD(a, b, c)  (a + b * c) | ||||
| #define DO_MSUB(a, b, c)  (a - b * c) | ||||
| 
 | ||||
| #define DO_DIVU(N, M) (unlikely(M == 0) ? 0 : N / M) | ||||
| #define DO_REMU(N, M) (unlikely(M == 0) ? 0 : N % M) | ||||
| #define DO_DIV(N, M)  (unlikely(M == 0) ? 0 :\ | ||||
|         unlikely((N == -N) && (M == (__typeof(N))(-1))) ? N : N / M) | ||||
| #define DO_REM(N, M)  (unlikely(M == 0) ? 0 :\ | ||||
|         unlikely((N == -N) && (M == (__typeof(N))(-1))) ? 0 : N % M) | ||||
| 
 | ||||
| #define DO_SIGNCOV(a, b)  (a == 0 ? 0 : a < 0 ? -b : b) | ||||
| 
 | ||||
| #define R_SHIFT(a, b) (a >> b) | ||||
| 
 | ||||
| #define DO_CLO_B(N)  (clz32(~N & 0xff) - 24) | ||||
| #define DO_CLO_H(N)  (clz32(~N & 0xffff) - 16) | ||||
| #define DO_CLO_W(N)  (clz32(~N)) | ||||
| #define DO_CLO_D(N)  (clz64(~N)) | ||||
| #define DO_CLZ_B(N)  (clz32(N) - 24) | ||||
| #define DO_CLZ_H(N)  (clz32(N) - 16) | ||||
| #define DO_CLZ_W(N)  (clz32(N)) | ||||
| #define DO_CLZ_D(N)  (clz64(N)) | ||||
| 
 | ||||
| #define DO_BITCLR(a, bit) (a & ~(1ull << bit)) | ||||
| #define DO_BITSET(a, bit) (a | 1ull << bit) | ||||
| #define DO_BITREV(a, bit) (a ^ (1ull << bit)) | ||||
| 
 | ||||
| #define VSEQ(a, b) (a == b ? -1 : 0) | ||||
| #define VSLE(a, b) (a <= b ? -1 : 0) | ||||
| #define VSLT(a, b) (a < b ? -1 : 0) | ||||
| 
 | ||||
| #define SHF_POS(i, imm) (((i) & 0xfc) + (((imm) >> (2 * ((i) & 0x03))) & 0x03)) | ||||
| 
 | ||||
| #endif /* LOONGARCH_VEC_H */ | ||||
|  | ||||
| @ -15,9 +15,6 @@ | ||||
| #include "vec.h" | ||||
| #include "tcg/tcg-gvec-desc.h" | ||||
| 
 | ||||
| #define DO_ADD(a, b)  (a + b) | ||||
| #define DO_SUB(a, b)  (a - b) | ||||
| 
 | ||||
| #define DO_ODD_EVEN(NAME, BIT, E1, E2, DO_OP)                        \ | ||||
| void HELPER(NAME)(void *vd, void *vj, void *vk, uint32_t desc)       \ | ||||
| {                                                                    \ | ||||
| @ -347,9 +344,6 @@ DO_ODD_U_S(vaddwod_h_bu_b, 16, H, UH, B, UB, DO_ADD) | ||||
| DO_ODD_U_S(vaddwod_w_hu_h, 32, W, UW, H, UH, DO_ADD) | ||||
| DO_ODD_U_S(vaddwod_d_wu_w, 64, D, UD, W, UW, DO_ADD) | ||||
| 
 | ||||
| #define DO_VAVG(a, b)  ((a >> 1) + (b >> 1) + (a & b & 1)) | ||||
| #define DO_VAVGR(a, b) ((a >> 1) + (b >> 1) + ((a | b) & 1)) | ||||
| 
 | ||||
| #define DO_3OP(NAME, BIT, E, DO_OP)                            \ | ||||
| void HELPER(NAME)(void *vd, void *vj, void *vk, uint32_t desc) \ | ||||
| {                                                              \ | ||||
| @ -381,8 +375,6 @@ DO_3OP(vavgr_hu, 16, UH, DO_VAVGR) | ||||
| DO_3OP(vavgr_wu, 32, UW, DO_VAVGR) | ||||
| DO_3OP(vavgr_du, 64, UD, DO_VAVGR) | ||||
| 
 | ||||
| #define DO_VABSD(a, b)  ((a > b) ? (a -b) : (b-a)) | ||||
| 
 | ||||
| DO_3OP(vabsd_b, 8, B, DO_VABSD) | ||||
| DO_3OP(vabsd_h, 16, H, DO_VABSD) | ||||
| DO_3OP(vabsd_w, 32, W, DO_VABSD) | ||||
| @ -392,8 +384,6 @@ DO_3OP(vabsd_hu, 16, UH, DO_VABSD) | ||||
| DO_3OP(vabsd_wu, 32, UW, DO_VABSD) | ||||
| DO_3OP(vabsd_du, 64, UD, DO_VABSD) | ||||
| 
 | ||||
| #define DO_VABS(a)  ((a < 0) ? (-a) : (a)) | ||||
| 
 | ||||
| #define DO_VADDA(NAME, BIT, E)                                 \ | ||||
| void HELPER(NAME)(void *vd, void *vj, void *vk, uint32_t desc) \ | ||||
| {                                                              \ | ||||
| @ -413,9 +403,6 @@ DO_VADDA(vadda_h, 16, H) | ||||
| DO_VADDA(vadda_w, 32, W) | ||||
| DO_VADDA(vadda_d, 64, D) | ||||
| 
 | ||||
| #define DO_MIN(a, b) (a < b ? a : b) | ||||
| #define DO_MAX(a, b) (a > b ? a : b) | ||||
| 
 | ||||
| #define VMINMAXI(NAME, BIT, E, DO_OP)                              \ | ||||
| void HELPER(NAME)(void *vd, void *vj, uint64_t imm, uint32_t desc) \ | ||||
| {                                                                  \ | ||||
| @ -500,8 +487,6 @@ DO_VMUH(vmuh_bu, 8, UH, UB, DO_MUH) | ||||
| DO_VMUH(vmuh_hu, 16, UW, UH, DO_MUH) | ||||
| DO_VMUH(vmuh_wu, 32, UD, UW, DO_MUH) | ||||
| 
 | ||||
| #define DO_MUL(a, b) (a * b) | ||||
| 
 | ||||
| DO_EVEN(vmulwev_h_b, 16, H, B, DO_MUL) | ||||
| DO_EVEN(vmulwev_w_h, 32, W, H, DO_MUL) | ||||
| DO_EVEN(vmulwev_d_w, 64, D, W, DO_MUL) | ||||
| @ -526,9 +511,6 @@ DO_ODD_U_S(vmulwod_h_bu_b, 16, H, UH, B, UB, DO_MUL) | ||||
| DO_ODD_U_S(vmulwod_w_hu_h, 32, W, UW, H, UH, DO_MUL) | ||||
| DO_ODD_U_S(vmulwod_d_wu_w, 64, D, UD, W, UW, DO_MUL) | ||||
| 
 | ||||
| #define DO_MADD(a, b, c)  (a + b * c) | ||||
| #define DO_MSUB(a, b, c)  (a - b * c) | ||||
| 
 | ||||
| #define VMADDSUB(NAME, BIT, E, DO_OP)                          \ | ||||
| void HELPER(NAME)(void *vd, void *vj, void *vk, uint32_t desc) \ | ||||
| {                                                              \ | ||||
| @ -639,13 +621,6 @@ VMADDWOD_U_S(vmaddwod_h_bu_b, 16, H, UH, B, UB, DO_MUL) | ||||
| VMADDWOD_U_S(vmaddwod_w_hu_h, 32, W, UW, H, UH, DO_MUL) | ||||
| VMADDWOD_U_S(vmaddwod_d_wu_w, 64, D, UD, W, UW, DO_MUL) | ||||
| 
 | ||||
| #define DO_DIVU(N, M) (unlikely(M == 0) ? 0 : N / M) | ||||
| #define DO_REMU(N, M) (unlikely(M == 0) ? 0 : N % M) | ||||
| #define DO_DIV(N, M)  (unlikely(M == 0) ? 0 :\ | ||||
|         unlikely((N == -N) && (M == (__typeof(N))(-1))) ? N : N / M) | ||||
| #define DO_REM(N, M)  (unlikely(M == 0) ? 0 :\ | ||||
|         unlikely((N == -N) && (M == (__typeof(N))(-1))) ? 0 : N % M) | ||||
| 
 | ||||
| #define VDIV(NAME, BIT, E, DO_OP)                              \ | ||||
| void HELPER(NAME)(void *vd, void *vj, void *vk, uint32_t desc) \ | ||||
| {                                                              \ | ||||
| @ -791,8 +766,6 @@ VEXT2XV(vext2xv_wu_hu, 32, UW, UH) | ||||
| VEXT2XV(vext2xv_du_hu, 64, UD, UH) | ||||
| VEXT2XV(vext2xv_du_wu, 64, UD, UW) | ||||
| 
 | ||||
| #define DO_SIGNCOV(a, b)  (a == 0 ? 0 : a < 0 ? -b : b) | ||||
| 
 | ||||
| DO_3OP(vsigncov_b, 8, B, DO_SIGNCOV) | ||||
| DO_3OP(vsigncov_h, 16, H, DO_SIGNCOV) | ||||
| DO_3OP(vsigncov_w, 32, W, DO_SIGNCOV) | ||||
| @ -1107,8 +1080,6 @@ VSRARI(vsrari_h, 16, H) | ||||
| VSRARI(vsrari_w, 32, W) | ||||
| VSRARI(vsrari_d, 64, D) | ||||
| 
 | ||||
| #define R_SHIFT(a, b) (a >> b) | ||||
| 
 | ||||
| #define VSRLN(NAME, BIT, E1, E2)                                          \ | ||||
| void HELPER(NAME)(void *vd, void *vj, void *vk, uint32_t desc)            \ | ||||
| {                                                                         \ | ||||
| @ -2272,15 +2243,6 @@ void HELPER(NAME)(void *vd, void *vj, uint32_t desc) \ | ||||
|     }                                                \ | ||||
| } | ||||
| 
 | ||||
| #define DO_CLO_B(N)  (clz32(~N & 0xff) - 24) | ||||
| #define DO_CLO_H(N)  (clz32(~N & 0xffff) - 16) | ||||
| #define DO_CLO_W(N)  (clz32(~N)) | ||||
| #define DO_CLO_D(N)  (clz64(~N)) | ||||
| #define DO_CLZ_B(N)  (clz32(N) - 24) | ||||
| #define DO_CLZ_H(N)  (clz32(N) - 16) | ||||
| #define DO_CLZ_W(N)  (clz32(N)) | ||||
| #define DO_CLZ_D(N)  (clz64(N)) | ||||
| 
 | ||||
| DO_2OP(vclo_b, 8, UB, DO_CLO_B) | ||||
| DO_2OP(vclo_h, 16, UH, DO_CLO_H) | ||||
| DO_2OP(vclo_w, 32, UW, DO_CLO_W) | ||||
| @ -2309,10 +2271,6 @@ VPCNT(vpcnt_h, 16, UH, ctpop16) | ||||
| VPCNT(vpcnt_w, 32, UW, ctpop32) | ||||
| VPCNT(vpcnt_d, 64, UD, ctpop64) | ||||
| 
 | ||||
| #define DO_BITCLR(a, bit) (a & ~(1ull << bit)) | ||||
| #define DO_BITSET(a, bit) (a | 1ull << bit) | ||||
| #define DO_BITREV(a, bit) (a ^ (1ull << bit)) | ||||
| 
 | ||||
| #define DO_BIT(NAME, BIT, E, DO_OP)                            \ | ||||
| void HELPER(NAME)(void *vd, void *vj, void *vk, uint32_t desc) \ | ||||
| {                                                              \ | ||||
| @ -3053,10 +3011,6 @@ void HELPER(vffint_s_l)(void *vd, void *vj, void *vk, | ||||
|     *Vd = temp; | ||||
| } | ||||
| 
 | ||||
| #define VSEQ(a, b) (a == b ? -1 : 0) | ||||
| #define VSLE(a, b) (a <= b ? -1 : 0) | ||||
| #define VSLT(a, b) (a < b ? -1 : 0) | ||||
| 
 | ||||
| #define VCMPI(NAME, BIT, E, DO_OP)                                 \ | ||||
| void HELPER(NAME)(void *vd, void *vj, uint64_t imm, uint32_t desc) \ | ||||
| {                                                                  \ | ||||
| @ -3381,8 +3335,6 @@ VILVH(vilvh_h, 32, H) | ||||
| VILVH(vilvh_w, 64, W) | ||||
| VILVH(vilvh_d, 128, D) | ||||
| 
 | ||||
| #define SHF_POS(i, imm) (((i) & 0xfc) + (((imm) >> (2 * ((i) & 0x03))) & 0x03)) | ||||
| 
 | ||||
| void HELPER(vshuf_b)(void *vd, void *vj, void *vk, void *va, uint32_t desc) | ||||
| { | ||||
|     int i, j, m; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Song Gao
						Song Gao