@@ -246,10 +246,10 @@ struct sljit_jump *quit;
246246struct sljit_jump * partial_quit [2 ];
247247vector_compare_type compare_type = vector_compare_match1 ;
248248sljit_s32 tmp1_reg_ind = sljit_get_register_index (SLJIT_GP_REGISTER , TMP1 );
249- sljit_s32 data_ind = sljit_get_register_index (SLJIT_FLOAT_REGISTER , SLJIT_FR0 );
250- sljit_s32 cmp1_ind = sljit_get_register_index (SLJIT_FLOAT_REGISTER , SLJIT_FR1 );
251- sljit_s32 cmp2_ind = sljit_get_register_index (SLJIT_FLOAT_REGISTER , SLJIT_FR2 );
252- sljit_s32 tmp_ind = sljit_get_register_index (SLJIT_FLOAT_REGISTER , SLJIT_FR3 );
249+ sljit_s32 data_ind = sljit_get_register_index (SLJIT_SIMD_REG_128 , SLJIT_VR0 );
250+ sljit_s32 cmp1_ind = sljit_get_register_index (SLJIT_SIMD_REG_128 , SLJIT_VR1 );
251+ sljit_s32 cmp2_ind = sljit_get_register_index (SLJIT_SIMD_REG_128 , SLJIT_VR2 );
252+ sljit_s32 tmp_ind = sljit_get_register_index (SLJIT_SIMD_REG_128 , SLJIT_VR3 );
253253sljit_u32 bit = 0 ;
254254int i ;
255255
@@ -273,17 +273,17 @@ if (common->mode == PCRE2_JIT_COMPLETE)
273273
274274/* First part (unaligned start) */
275275value = SLJIT_SIMD_REG_128 | SLJIT_SIMD_ELEM_32 | SLJIT_SIMD_LANE_ZERO ;
276- sljit_emit_simd_lane_mov (compiler , value , SLJIT_FR1 , 0 , SLJIT_IMM , character_to_int32 (char1 | bit ));
276+ sljit_emit_simd_lane_mov (compiler , value , SLJIT_VR1 , 0 , SLJIT_IMM , character_to_int32 (char1 | bit ));
277277
278278if (char1 != char2 )
279- sljit_emit_simd_lane_mov (compiler , value , SLJIT_FR2 , 0 , SLJIT_IMM , character_to_int32 (bit != 0 ? bit : char2 ));
279+ sljit_emit_simd_lane_mov (compiler , value , SLJIT_VR2 , 0 , SLJIT_IMM , character_to_int32 (bit != 0 ? bit : char2 ));
280280
281281OP1 (SLJIT_MOV , TMP2 , 0 , STR_PTR , 0 );
282282
283- sljit_emit_simd_lane_replicate (compiler , reg_type | SLJIT_SIMD_ELEM_32 , SLJIT_FR1 , SLJIT_FR1 , 0 );
283+ sljit_emit_simd_lane_replicate (compiler , reg_type | SLJIT_SIMD_ELEM_32 , SLJIT_VR1 , SLJIT_VR1 , 0 );
284284
285285if (char1 != char2 )
286- sljit_emit_simd_lane_replicate (compiler , reg_type | SLJIT_SIMD_ELEM_32 , SLJIT_FR2 , SLJIT_FR2 , 0 );
286+ sljit_emit_simd_lane_replicate (compiler , reg_type | SLJIT_SIMD_ELEM_32 , SLJIT_VR2 , SLJIT_VR2 , 0 );
287287
288288#if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32
289289restart = LABEL ();
@@ -294,12 +294,12 @@ OP2(SLJIT_AND, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, ~value);
294294OP2 (SLJIT_AND , TMP2 , 0 , TMP2 , 0 , SLJIT_IMM , value );
295295
296296value = (reg_type == SLJIT_SIMD_REG_256 ) ? SLJIT_SIMD_MEM_ALIGNED_256 : SLJIT_SIMD_MEM_ALIGNED_128 ;
297- sljit_emit_simd_mov (compiler , reg_type | value , SLJIT_FR0 , SLJIT_MEM1 (STR_PTR ), 0 );
297+ sljit_emit_simd_mov (compiler , reg_type | value , SLJIT_VR0 , SLJIT_MEM1 (STR_PTR ), 0 );
298298
299299for (i = 0 ; i < 4 ; i ++ )
300300 fast_forward_char_pair_sse2_compare (compiler , compare_type , reg_type , i , data_ind , cmp1_ind , cmp2_ind , tmp_ind );
301301
302- sljit_emit_simd_sign (compiler , SLJIT_SIMD_STORE | reg_type | SLJIT_SIMD_ELEM_8 , SLJIT_FR0 , TMP1 , 0 );
302+ sljit_emit_simd_sign (compiler , SLJIT_SIMD_STORE | reg_type | SLJIT_SIMD_ELEM_8 , SLJIT_VR0 , TMP1 , 0 );
303303OP2 (SLJIT_ADD , STR_PTR , 0 , STR_PTR , 0 , TMP2 , 0 );
304304OP2 (SLJIT_LSHR , TMP1 , 0 , TMP1 , 0 , TMP2 , 0 );
305305
@@ -318,11 +318,11 @@ if (common->mode == PCRE2_JIT_COMPLETE)
318318 add_jump (compiler , & common -> failed_match , partial_quit [1 ]);
319319
320320value = (reg_type == SLJIT_SIMD_REG_256 ) ? SLJIT_SIMD_MEM_ALIGNED_256 : SLJIT_SIMD_MEM_ALIGNED_128 ;
321- sljit_emit_simd_mov (compiler , reg_type | value , SLJIT_FR0 , SLJIT_MEM1 (STR_PTR ), 0 );
321+ sljit_emit_simd_mov (compiler , reg_type | value , SLJIT_VR0 , SLJIT_MEM1 (STR_PTR ), 0 );
322322for (i = 0 ; i < 4 ; i ++ )
323323 fast_forward_char_pair_sse2_compare (compiler , compare_type , reg_type , i , data_ind , cmp1_ind , cmp2_ind , tmp_ind );
324324
325- sljit_emit_simd_sign (compiler , SLJIT_SIMD_STORE | reg_type | SLJIT_SIMD_ELEM_8 , SLJIT_FR0 , TMP1 , 0 );
325+ sljit_emit_simd_sign (compiler , SLJIT_SIMD_STORE | reg_type | SLJIT_SIMD_ELEM_8 , SLJIT_VR0 , TMP1 , 0 );
326326CMPTO (SLJIT_ZERO , TMP1 , 0 , SLJIT_IMM , 0 , start );
327327
328328JUMPHERE (quit );
@@ -380,10 +380,10 @@ struct sljit_jump *quit;
380380jump_list * not_found = NULL ;
381381vector_compare_type compare_type = vector_compare_match1 ;
382382sljit_s32 tmp1_reg_ind = sljit_get_register_index (SLJIT_GP_REGISTER , TMP1 );
383- sljit_s32 data_ind = sljit_get_register_index (SLJIT_FLOAT_REGISTER , SLJIT_FR0 );
384- sljit_s32 cmp1_ind = sljit_get_register_index (SLJIT_FLOAT_REGISTER , SLJIT_FR1 );
385- sljit_s32 cmp2_ind = sljit_get_register_index (SLJIT_FLOAT_REGISTER , SLJIT_FR2 );
386- sljit_s32 tmp_ind = sljit_get_register_index (SLJIT_FLOAT_REGISTER , SLJIT_FR3 );
383+ sljit_s32 data_ind = sljit_get_register_index (SLJIT_SIMD_REG_128 , SLJIT_VR0 );
384+ sljit_s32 cmp1_ind = sljit_get_register_index (SLJIT_SIMD_REG_128 , SLJIT_VR1 );
385+ sljit_s32 cmp2_ind = sljit_get_register_index (SLJIT_SIMD_REG_128 , SLJIT_VR2 );
386+ sljit_s32 tmp_ind = sljit_get_register_index (SLJIT_SIMD_REG_128 , SLJIT_VR3 );
387387sljit_u32 bit = 0 ;
388388int i ;
389389
@@ -406,29 +406,29 @@ OP1(SLJIT_MOV, TMP3, 0, STR_PTR, 0);
406406/* First part (unaligned start) */
407407
408408value = SLJIT_SIMD_REG_128 | SLJIT_SIMD_ELEM_32 | SLJIT_SIMD_LANE_ZERO ;
409- sljit_emit_simd_lane_mov (compiler , value , SLJIT_FR1 , 0 , SLJIT_IMM , character_to_int32 (char1 | bit ));
409+ sljit_emit_simd_lane_mov (compiler , value , SLJIT_VR1 , 0 , SLJIT_IMM , character_to_int32 (char1 | bit ));
410410
411411if (char1 != char2 )
412- sljit_emit_simd_lane_mov (compiler , value , SLJIT_FR2 , 0 , SLJIT_IMM , character_to_int32 (bit != 0 ? bit : char2 ));
412+ sljit_emit_simd_lane_mov (compiler , value , SLJIT_VR2 , 0 , SLJIT_IMM , character_to_int32 (bit != 0 ? bit : char2 ));
413413
414414OP1 (SLJIT_MOV , STR_PTR , 0 , TMP2 , 0 );
415415
416- sljit_emit_simd_lane_replicate (compiler , reg_type | SLJIT_SIMD_ELEM_32 , SLJIT_FR1 , SLJIT_FR1 , 0 );
416+ sljit_emit_simd_lane_replicate (compiler , reg_type | SLJIT_SIMD_ELEM_32 , SLJIT_VR1 , SLJIT_VR1 , 0 );
417417
418418if (char1 != char2 )
419- sljit_emit_simd_lane_replicate (compiler , reg_type | SLJIT_SIMD_ELEM_32 , SLJIT_FR2 , SLJIT_FR2 , 0 );
419+ sljit_emit_simd_lane_replicate (compiler , reg_type | SLJIT_SIMD_ELEM_32 , SLJIT_VR2 , SLJIT_VR2 , 0 );
420420
421421value = (reg_type == SLJIT_SIMD_REG_256 ) ? 0x1f : 0xf ;
422422OP2 (SLJIT_AND , STR_PTR , 0 , STR_PTR , 0 , SLJIT_IMM , ~value );
423423OP2 (SLJIT_AND , TMP2 , 0 , TMP2 , 0 , SLJIT_IMM , value );
424424
425425value = (reg_type == SLJIT_SIMD_REG_256 ) ? SLJIT_SIMD_MEM_ALIGNED_256 : SLJIT_SIMD_MEM_ALIGNED_128 ;
426- sljit_emit_simd_mov (compiler , reg_type | value , SLJIT_FR0 , SLJIT_MEM1 (STR_PTR ), 0 );
426+ sljit_emit_simd_mov (compiler , reg_type | value , SLJIT_VR0 , SLJIT_MEM1 (STR_PTR ), 0 );
427427
428428for (i = 0 ; i < 4 ; i ++ )
429429 fast_forward_char_pair_sse2_compare (compiler , compare_type , reg_type , i , data_ind , cmp1_ind , cmp2_ind , tmp_ind );
430430
431- sljit_emit_simd_sign (compiler , SLJIT_SIMD_STORE | reg_type | SLJIT_SIMD_ELEM_8 , SLJIT_FR0 , TMP1 , 0 );
431+ sljit_emit_simd_sign (compiler , SLJIT_SIMD_STORE | reg_type | SLJIT_SIMD_ELEM_8 , SLJIT_VR0 , TMP1 , 0 );
432432OP2 (SLJIT_ADD , STR_PTR , 0 , STR_PTR , 0 , TMP2 , 0 );
433433OP2 (SLJIT_LSHR , TMP1 , 0 , TMP1 , 0 , TMP2 , 0 );
434434
@@ -445,12 +445,12 @@ OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, value);
445445add_jump (compiler , & not_found , CMP (SLJIT_GREATER_EQUAL , STR_PTR , 0 , STR_END , 0 ));
446446
447447value = (reg_type == SLJIT_SIMD_REG_256 ) ? SLJIT_SIMD_MEM_ALIGNED_256 : SLJIT_SIMD_MEM_ALIGNED_128 ;
448- sljit_emit_simd_mov (compiler , reg_type | value , SLJIT_FR0 , SLJIT_MEM1 (STR_PTR ), 0 );
448+ sljit_emit_simd_mov (compiler , reg_type | value , SLJIT_VR0 , SLJIT_MEM1 (STR_PTR ), 0 );
449449
450450for (i = 0 ; i < 4 ; i ++ )
451451 fast_forward_char_pair_sse2_compare (compiler , compare_type , reg_type , i , data_ind , cmp1_ind , cmp2_ind , tmp_ind );
452452
453- sljit_emit_simd_sign (compiler , SLJIT_SIMD_STORE | reg_type | SLJIT_SIMD_ELEM_8 , SLJIT_FR0 , TMP1 , 0 );
453+ sljit_emit_simd_sign (compiler , SLJIT_SIMD_STORE | reg_type | SLJIT_SIMD_ELEM_8 , SLJIT_VR0 , TMP1 , 0 );
454454CMPTO (SLJIT_ZERO , TMP1 , 0 , SLJIT_IMM , 0 , start );
455455
456456JUMPHERE (quit );
@@ -488,14 +488,14 @@ sljit_u32 bit1 = 0;
488488sljit_u32 bit2 = 0 ;
489489sljit_u32 diff = IN_UCHARS (offs1 - offs2 );
490490sljit_s32 tmp1_reg_ind = sljit_get_register_index (SLJIT_GP_REGISTER , TMP1 );
491- sljit_s32 data1_ind = sljit_get_register_index (SLJIT_FLOAT_REGISTER , SLJIT_FR0 );
492- sljit_s32 data2_ind = sljit_get_register_index (SLJIT_FLOAT_REGISTER , SLJIT_FR1 );
493- sljit_s32 cmp1a_ind = sljit_get_register_index (SLJIT_FLOAT_REGISTER , SLJIT_FR2 );
494- sljit_s32 cmp2a_ind = sljit_get_register_index (SLJIT_FLOAT_REGISTER , SLJIT_FR3 );
495- sljit_s32 cmp1b_ind = sljit_get_register_index (SLJIT_FLOAT_REGISTER , SLJIT_FR4 );
496- sljit_s32 cmp2b_ind = sljit_get_register_index (SLJIT_FLOAT_REGISTER , SLJIT_FR5 );
497- sljit_s32 tmp1_ind = sljit_get_register_index (SLJIT_FLOAT_REGISTER , SLJIT_FR6 );
498- sljit_s32 tmp2_ind = sljit_get_register_index (SLJIT_FLOAT_REGISTER , SLJIT_TMP_FR0 );
491+ sljit_s32 data1_ind = sljit_get_register_index (SLJIT_SIMD_REG_128 , SLJIT_VR0 );
492+ sljit_s32 data2_ind = sljit_get_register_index (SLJIT_SIMD_REG_128 , SLJIT_VR1 );
493+ sljit_s32 cmp1a_ind = sljit_get_register_index (SLJIT_SIMD_REG_128 , SLJIT_VR2 );
494+ sljit_s32 cmp2a_ind = sljit_get_register_index (SLJIT_SIMD_REG_128 , SLJIT_VR3 );
495+ sljit_s32 cmp1b_ind = sljit_get_register_index (SLJIT_SIMD_REG_128 , SLJIT_VR4 );
496+ sljit_s32 cmp2b_ind = sljit_get_register_index (SLJIT_SIMD_REG_128 , SLJIT_VR5 );
497+ sljit_s32 tmp1_ind = sljit_get_register_index (SLJIT_SIMD_REG_128 , SLJIT_VR6 );
498+ sljit_s32 tmp2_ind = sljit_get_register_index (SLJIT_SIMD_REG_128 , SLJIT_TMP_DEST_VREG );
499499struct sljit_label * start ;
500500#if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32
501501struct sljit_label * restart ;
@@ -541,10 +541,10 @@ else
541541 }
542542
543543value = SLJIT_SIMD_REG_128 | SLJIT_SIMD_ELEM_32 | SLJIT_SIMD_LANE_ZERO ;
544- sljit_emit_simd_lane_mov (compiler , value , SLJIT_FR2 , 0 , TMP1 , 0 );
544+ sljit_emit_simd_lane_mov (compiler , value , SLJIT_VR2 , 0 , TMP1 , 0 );
545545
546546if (char1a != char1b )
547- sljit_emit_simd_lane_mov (compiler , value , SLJIT_FR4 , 0 , TMP2 , 0 );
547+ sljit_emit_simd_lane_mov (compiler , value , SLJIT_VR4 , 0 , TMP2 , 0 );
548548
549549if (char2a == char2b )
550550 OP1 (SLJIT_MOV , TMP1 , 0 , SLJIT_IMM , character_to_int32 (char2a ));
@@ -566,18 +566,18 @@ else
566566 }
567567 }
568568
569- sljit_emit_simd_lane_mov (compiler , value , SLJIT_FR3 , 0 , TMP1 , 0 );
569+ sljit_emit_simd_lane_mov (compiler , value , SLJIT_VR3 , 0 , TMP1 , 0 );
570570
571571if (char2a != char2b )
572- sljit_emit_simd_lane_mov (compiler , value , SLJIT_FR5 , 0 , TMP2 , 0 );
572+ sljit_emit_simd_lane_mov (compiler , value , SLJIT_VR5 , 0 , TMP2 , 0 );
573573
574- sljit_emit_simd_lane_replicate (compiler , reg_type | SLJIT_SIMD_ELEM_32 , SLJIT_FR2 , SLJIT_FR2 , 0 );
574+ sljit_emit_simd_lane_replicate (compiler , reg_type | SLJIT_SIMD_ELEM_32 , SLJIT_VR2 , SLJIT_VR2 , 0 );
575575if (char1a != char1b )
576- sljit_emit_simd_lane_replicate (compiler , reg_type | SLJIT_SIMD_ELEM_32 , SLJIT_FR4 , SLJIT_FR4 , 0 );
576+ sljit_emit_simd_lane_replicate (compiler , reg_type | SLJIT_SIMD_ELEM_32 , SLJIT_VR4 , SLJIT_VR4 , 0 );
577577
578- sljit_emit_simd_lane_replicate (compiler , reg_type | SLJIT_SIMD_ELEM_32 , SLJIT_FR3 , SLJIT_FR3 , 0 );
578+ sljit_emit_simd_lane_replicate (compiler , reg_type | SLJIT_SIMD_ELEM_32 , SLJIT_VR3 , SLJIT_VR3 , 0 );
579579if (char2a != char2b )
580- sljit_emit_simd_lane_replicate (compiler , reg_type | SLJIT_SIMD_ELEM_32 , SLJIT_FR5 , SLJIT_FR5 , 0 );
580+ sljit_emit_simd_lane_replicate (compiler , reg_type | SLJIT_SIMD_ELEM_32 , SLJIT_VR5 , SLJIT_VR5 , 0 );
581581
582582#if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32
583583restart = LABEL ();
@@ -589,11 +589,11 @@ value = (reg_type == SLJIT_SIMD_REG_256) ? ~0x1f : ~0xf;
589589OP2 (SLJIT_AND , STR_PTR , 0 , STR_PTR , 0 , SLJIT_IMM , value );
590590
591591value = (reg_type == SLJIT_SIMD_REG_256 ) ? SLJIT_SIMD_MEM_ALIGNED_256 : SLJIT_SIMD_MEM_ALIGNED_128 ;
592- sljit_emit_simd_mov (compiler , reg_type | value , SLJIT_FR0 , SLJIT_MEM1 (STR_PTR ), 0 );
592+ sljit_emit_simd_mov (compiler , reg_type | value , SLJIT_VR0 , SLJIT_MEM1 (STR_PTR ), 0 );
593593
594594jump [0 ] = CMP (SLJIT_GREATER_EQUAL , TMP1 , 0 , STR_PTR , 0 );
595595
596- sljit_emit_simd_mov (compiler , reg_type , SLJIT_FR1 , SLJIT_MEM1 (STR_PTR ), - (sljit_sw )diff );
596+ sljit_emit_simd_mov (compiler , reg_type , SLJIT_VR1 , SLJIT_MEM1 (STR_PTR ), - (sljit_sw )diff );
597597jump [1 ] = JUMP (SLJIT_JUMP );
598598
599599JUMPHERE (jump [0 ]);
@@ -668,8 +668,8 @@ for (i = 0; i < 4; i++)
668668 fast_forward_char_pair_sse2_compare (compiler , compare1_type , reg_type , i , data1_ind , cmp1a_ind , cmp1b_ind , tmp1_ind );
669669 }
670670
671- sljit_emit_simd_op2 (compiler , SLJIT_SIMD_OP2_AND | reg_type , SLJIT_FR0 , SLJIT_FR0 , SLJIT_FR1 , 0 );
672- sljit_emit_simd_sign (compiler , SLJIT_SIMD_STORE | reg_type | SLJIT_SIMD_ELEM_8 , SLJIT_FR0 , TMP1 , 0 );
671+ sljit_emit_simd_op2 (compiler , SLJIT_SIMD_OP2_AND | reg_type , SLJIT_VR0 , SLJIT_VR0 , SLJIT_VR1 , 0 );
672+ sljit_emit_simd_sign (compiler , SLJIT_SIMD_STORE | reg_type | SLJIT_SIMD_ELEM_8 , SLJIT_VR0 , TMP1 , 0 );
673673
674674/* Ignore matches before the first STR_PTR. */
675675OP2 (SLJIT_ADD , STR_PTR , 0 , STR_PTR , 0 , TMP2 , 0 );
@@ -687,17 +687,17 @@ OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, value);
687687add_jump (compiler , & common -> failed_match , CMP (SLJIT_GREATER_EQUAL , STR_PTR , 0 , STR_END , 0 ));
688688
689689value = (reg_type == SLJIT_SIMD_REG_256 ) ? SLJIT_SIMD_MEM_ALIGNED_256 : SLJIT_SIMD_MEM_ALIGNED_128 ;
690- sljit_emit_simd_mov (compiler , reg_type | value , SLJIT_FR0 , SLJIT_MEM1 (STR_PTR ), 0 );
691- sljit_emit_simd_mov (compiler , reg_type , SLJIT_FR1 , SLJIT_MEM1 (STR_PTR ), - (sljit_sw )diff );
690+ sljit_emit_simd_mov (compiler , reg_type | value , SLJIT_VR0 , SLJIT_MEM1 (STR_PTR ), 0 );
691+ sljit_emit_simd_mov (compiler , reg_type , SLJIT_VR1 , SLJIT_MEM1 (STR_PTR ), - (sljit_sw )diff );
692692
693693for (i = 0 ; i < 4 ; i ++ )
694694 {
695695 fast_forward_char_pair_sse2_compare (compiler , compare1_type , reg_type , i , data1_ind , cmp1a_ind , cmp1b_ind , tmp2_ind );
696696 fast_forward_char_pair_sse2_compare (compiler , compare2_type , reg_type , i , data2_ind , cmp2a_ind , cmp2b_ind , tmp1_ind );
697697 }
698698
699- sljit_emit_simd_op2 (compiler , SLJIT_SIMD_OP2_AND | reg_type , SLJIT_FR0 , SLJIT_FR0 , SLJIT_FR1 , 0 );
700- sljit_emit_simd_sign (compiler , SLJIT_SIMD_STORE | reg_type | SLJIT_SIMD_ELEM_8 , SLJIT_FR0 , TMP1 , 0 );
699+ sljit_emit_simd_op2 (compiler , SLJIT_SIMD_OP2_AND | reg_type , SLJIT_VR0 , SLJIT_VR0 , SLJIT_VR1 , 0 );
700+ sljit_emit_simd_sign (compiler , SLJIT_SIMD_STORE | reg_type | SLJIT_SIMD_ELEM_8 , SLJIT_VR0 , TMP1 , 0 );
701701
702702CMPTO (SLJIT_ZERO , TMP1 , 0 , SLJIT_IMM , 0 , start );
703703
0 commit comments