Skip to content

Commit 1c5ac2f

Browse files
jinbosonjinboson
andauthored
Fix crashes on 2k3000 (#3897)
* Fix tests crash on 2k3000 Forgot to add runtime check here, resulting in crash happend on 2k3000. * Not apply -mflags globaly on loongarch This can fix crashes caused by automatic vectorization. --------- Co-authored-by: jinboson <[email protected]>
1 parent a017516 commit 1c5ac2f

File tree

4 files changed

+34
-6
lines changed

4 files changed

+34
-6
lines changed

Makefile

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,30 @@ ifneq ($(V),Yes)
115115
QUIET = @
116116
endif
117117

118+
### Not apply -mflags globaly
119+
ifeq (loongarch64, $(ARCH))
120+
LSX_OBJS := \
121+
$(SRC_PATH)codec/common/loongarch/copy_mb_lsx.o \
122+
$(SRC_PATH)codec/common/loongarch/deblock_lsx.o \
123+
$(SRC_PATH)codec/common/loongarch/intra_pred_com_lsx.o \
124+
$(SRC_PATH)codec/common/loongarch/mc_chroma_lsx.o \
125+
$(SRC_PATH)codec/common/loongarch/mc_horver_lsx.o \
126+
$(SRC_PATH)codec/decoder/core/loongarch/mb_aux_lsx.o \
127+
$(SRC_PATH)codec/encoder/core/loongarch/get_intra_predictor_lsx.o \
128+
$(SRC_PATH)codec/encoder/core/loongarch/quant_lsx.o \
129+
$(SRC_PATH)codec/encoder/core/loongarch/svc_motion_estimate_lsx.o \
130+
$(SRC_PATH)codec/processing/src/loongarch/vaa_lsx.o
131+
132+
LASX_OBJS := \
133+
$(SRC_PATH)codec/common/loongarch/intra_pred_com_lasx.o \
134+
$(SRC_PATH)codec/common/loongarch/satd_sad_lasx.o \
135+
$(SRC_PATH)codec/encoder/core/loongarch/dct_lasx.o \
136+
$(SRC_PATH)codec/encoder/core/loongarch/sample_lasx.o \
137+
$(SRC_PATH)codec/processing/src/loongarch/vaa_lasx.o
138+
139+
$(LSX_OBJS): CFLAGS += -mlsx
140+
$(LASX_OBJS): CFLAGS += -mlasx
141+
endif
118142

119143
INCLUDES += -I$(SRC_PATH)codec/api/wels -I$(SRC_PATH)codec/common/inc -Icodec/common/inc
120144

build/arch.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,14 @@ ASMFLAGS += -I$(SRC_PATH)codec/common/loongarch/
6565
ifeq ($(ENABLE_LSX), Yes)
6666
ENABLE_LSX = $(shell $(SRC_PATH)build/loongarch-simd-check.sh $(CC) lsx)
6767
ifeq ($(ENABLE_LSX), Yes)
68-
CFLAGS += -DHAVE_LSX -mlsx
68+
CFLAGS += -DHAVE_LSX
6969
endif
7070
endif
7171
#lasx
7272
ifeq ($(ENABLE_LASX), Yes)
7373
ENABLE_LASX = $(shell $(SRC_PATH)build/loongarch-simd-check.sh $(CC) lasx)
7474
ifeq ($(ENABLE_LASX), Yes)
75-
CFLAGS += -DHAVE_LASX -mlasx
75+
CFLAGS += -DHAVE_LASX
7676
endif
7777
endif
7878
endif

test/encoder/EncUT_DecodeMbAux.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,8 @@ TEST (DecodeMbAuxTest, WelsIDctT4Rec_mmi) {
253253
#endif
254254
#if defined(HAVE_LASX)
255255
TEST (DecodeMbAuxTest, WelsIDctT4Rec_lasx) {
256-
TestIDctT4Rec<int16_t> (WelsIDctT4Rec_lasx);
256+
if (WelsCPUFeatureDetect (0) & WELS_CPU_LASX)
257+
TestIDctT4Rec<int16_t> (WelsIDctT4Rec_lasx);
257258
}
258259
#endif
259260
template<typename clip_t>
@@ -428,6 +429,7 @@ TEST (DecodeMbAuxTest, WelsIDctRecI16x16Dc_mmi) {
428429
#endif
429430
#if defined(HAVE_LASX)
430431
TEST (DecodeMbAuxTest, WelsIDctFourT4Rec_lasx) {
431-
TestIDctFourT4Rec<int16_t> (WelsIDctFourT4Rec_lasx);
432+
if (WelsCPUFeatureDetect (0) & WELS_CPU_LASX)
433+
TestIDctFourT4Rec<int16_t> (WelsIDctFourT4Rec_lasx);
432434
}
433435
#endif

test/encoder/EncUT_EncoderMbAux.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,11 +294,13 @@ TEST (EncodeMbAuxTest, WelsCalculateSingleCtr4x4_mmi) {
294294
#endif
295295
#ifdef HAVE_LASX
296296
TEST (EncodeMbAuxTest, WelsDctT4_lasx) {
297-
TestDctT4 (WelsDctT4_lasx);
297+
if (WelsCPUFeatureDetect (0) & WELS_CPU_LASX)
298+
TestDctT4 (WelsDctT4_lasx);
298299
}
299300

300301
TEST (EncodeMbAuxTest, WelsDctFourT4_lasx) {
301-
TestDctFourT4 (WelsDctFourT4_lasx);
302+
if (WelsCPUFeatureDetect (0) & WELS_CPU_LASX)
303+
TestDctFourT4 (WelsDctFourT4_lasx);
302304
}
303305
#endif
304306

0 commit comments

Comments
 (0)