@@ -5619,6 +5619,76 @@ void CodeGen::genArm64EmitterUnitTestsSve()
56195619                              INS_OPTS_SCALABLE_D); //  FMINQV  <Vd>.<T>, <Pg>, <Zn>.<Tb>
56205620#endif                                               //  ALL_ARM64_EMITTER_UNIT_TESTS_SVE_UNSUPPORTED
56215621
5622+     //  IF_SVE_GU_3A
5623+     theEmitter->emitIns_R_R_R_I (INS_sve_fmla, EA_SCALABLE, REG_V0, REG_V2, REG_V1, 0 ,
5624+                                 INS_OPTS_SCALABLE_S); //  FMLA <Zda>.S, <Zn>.S, <Zm>.S[<imm>]
5625+     theEmitter->emitIns_R_R_R_I (INS_sve_fmla, EA_SCALABLE, REG_V4, REG_V6, REG_V3, 1 ,
5626+                                 INS_OPTS_SCALABLE_S); //  FMLA <Zda>.S, <Zn>.S, <Zm>.S[<imm>]
5627+     theEmitter->emitIns_R_R_R_I (INS_sve_fmls, EA_SCALABLE, REG_V8, REG_V10, REG_V5, 2 ,
5628+                                 INS_OPTS_SCALABLE_S); //  FMLS <Zda>.S, <Zn>.S, <Zm>.S[<imm>]
5629+     theEmitter->emitIns_R_R_R_I (INS_sve_fmls, EA_SCALABLE, REG_V12, REG_V14, REG_V7, 3 ,
5630+                                 INS_OPTS_SCALABLE_S); //  FMLS <Zda>.S, <Zn>.S, <Zm>.S[<imm>]
5631+ 
5632+     //  IF_SVE_GU_3B
5633+     theEmitter->emitIns_R_R_R_I (INS_sve_fmla, EA_SCALABLE, REG_V1, REG_V0, REG_V0, 0 ,
5634+                                 INS_OPTS_SCALABLE_D); //  FMLA <Zda>.D, <Zn>.D, <Zm>.D[<imm>]
5635+     theEmitter->emitIns_R_R_R_I (INS_sve_fmla, EA_SCALABLE, REG_V3, REG_V2, REG_V5, 1 ,
5636+                                 INS_OPTS_SCALABLE_D); //  FMLA <Zda>.D, <Zn>.D, <Zm>.D[<imm>]
5637+     theEmitter->emitIns_R_R_R_I (INS_sve_fmls, EA_SCALABLE, REG_V5, REG_V4, REG_V10, 0 ,
5638+                                 INS_OPTS_SCALABLE_D); //  FMLS <Zda>.D, <Zn>.D, <Zm>.D[<imm>]
5639+     theEmitter->emitIns_R_R_R_I (INS_sve_fmls, EA_SCALABLE, REG_V7, REG_V6, REG_V15, 1 ,
5640+                                 INS_OPTS_SCALABLE_D); //  FMLS <Zda>.D, <Zn>.D, <Zm>.D[<imm>]
5641+ 
5642+     //  IF_SVE_GU_3C
5643+     theEmitter->emitIns_R_R_R_I (INS_sve_bfmla, EA_SCALABLE, REG_V1, REG_V2, REG_V0, 0 ,
5644+                                 INS_OPTS_SCALABLE_H); //  BFMLA <Zda>.H, <Zn>.H, <Zm>.H[<imm>]
5645+     theEmitter->emitIns_R_R_R_I (INS_sve_bfmla, EA_SCALABLE, REG_V3, REG_V4, REG_V2, 2 ,
5646+                                 INS_OPTS_SCALABLE_H); //  BFMLA <Zda>.H, <Zn>.H, <Zm>.H[<imm>]
5647+     theEmitter->emitIns_R_R_R_I (INS_sve_bfmls, EA_SCALABLE, REG_V5, REG_V6, REG_V4, 5 ,
5648+                                 INS_OPTS_SCALABLE_H); //  BFMLS <Zda>.H, <Zn>.H, <Zm>.H[<imm>]
5649+     theEmitter->emitIns_R_R_R_I (INS_sve_bfmls, EA_SCALABLE, REG_V7, REG_V8, REG_V7, 7 ,
5650+                                 INS_OPTS_SCALABLE_H); //  BFMLS <Zda>.H, <Zn>.H, <Zm>.H[<imm>]
5651+ 
5652+     //  IF_SVE_GX_3A
5653+     theEmitter->emitIns_R_R_R_I (INS_sve_fmul, EA_SCALABLE, REG_V0, REG_V2, REG_V1, 0 ,
5654+                                 INS_OPTS_SCALABLE_S); //  FMUL <Zda>.S, <Zn>.S, <Zm>.S[<imm>]
5655+     theEmitter->emitIns_R_R_R_I (INS_sve_fmul, EA_SCALABLE, REG_V4, REG_V6, REG_V3, 1 ,
5656+                                 INS_OPTS_SCALABLE_S); //  FMUL <Zda>.S, <Zn>.S, <Zm>.S[<imm>]
5657+     theEmitter->emitIns_R_R_R_I (INS_sve_fmul, EA_SCALABLE, REG_V8, REG_V10, REG_V5, 2 ,
5658+                                 INS_OPTS_SCALABLE_S); //  FMUL <Zda>.S, <Zn>.S, <Zm>.S[<imm>]
5659+     theEmitter->emitIns_R_R_R_I (INS_sve_fmul, EA_SCALABLE, REG_V12, REG_V14, REG_V7, 3 ,
5660+                                 INS_OPTS_SCALABLE_S); //  FMUL <Zda>.S, <Zn>.S, <Zm>.S[<imm>]
5661+ 
5662+     //  IF_SVE_GX_3B
5663+     theEmitter->emitIns_R_R_R_I (INS_sve_fmul, EA_SCALABLE, REG_V1, REG_V0, REG_V0, 0 ,
5664+                                 INS_OPTS_SCALABLE_D); //  FMUL <Zda>.D, <Zn>.D, <Zm>.D[<imm>]
5665+     theEmitter->emitIns_R_R_R_I (INS_sve_fmul, EA_SCALABLE, REG_V3, REG_V2, REG_V5, 1 ,
5666+                                 INS_OPTS_SCALABLE_D); //  FMUL <Zda>.D, <Zn>.D, <Zm>.D[<imm>]
5667+     theEmitter->emitIns_R_R_R_I (INS_sve_fmul, EA_SCALABLE, REG_V5, REG_V4, REG_V10, 0 ,
5668+                                 INS_OPTS_SCALABLE_D); //  FMUL <Zda>.D, <Zn>.D, <Zm>.D[<imm>]
5669+     theEmitter->emitIns_R_R_R_I (INS_sve_fmul, EA_SCALABLE, REG_V7, REG_V6, REG_V15, 1 ,
5670+                                 INS_OPTS_SCALABLE_D); //  FMUL <Zda>.D, <Zn>.D, <Zm>.D[<imm>]
5671+ 
5672+     //  IF_SVE_GX_3C
5673+     theEmitter->emitIns_R_R_R_I (INS_sve_bfmul, EA_SCALABLE, REG_V1, REG_V2, REG_V0, 0 ,
5674+                                 INS_OPTS_SCALABLE_H); //  BFMUL <Zda>.H, <Zn>.H, <Zm>.H[<imm>]
5675+     theEmitter->emitIns_R_R_R_I (INS_sve_bfmul, EA_SCALABLE, REG_V3, REG_V4, REG_V2, 2 ,
5676+                                 INS_OPTS_SCALABLE_H); //  BFMUL <Zda>.H, <Zn>.H, <Zm>.H[<imm>]
5677+     theEmitter->emitIns_R_R_R_I (INS_sve_bfmul, EA_SCALABLE, REG_V5, REG_V6, REG_V4, 5 ,
5678+                                 INS_OPTS_SCALABLE_H); //  BFMUL <Zda>.H, <Zn>.H, <Zm>.H[<imm>]
5679+     theEmitter->emitIns_R_R_R_I (INS_sve_bfmul, EA_SCALABLE, REG_V7, REG_V8, REG_V7, 7 ,
5680+                                 INS_OPTS_SCALABLE_H); //  BFMUL <Zda>.H, <Zn>.H, <Zm>.H[<imm>]
5681+ 
5682+     //  IF_SVE_GY_3B
5683+     theEmitter->emitIns_R_R_R_I (INS_sve_fdot, EA_SCALABLE, REG_V0, REG_V2, REG_V1, 0 ,
5684+                                 INS_OPTS_SCALABLE_H); //  FDOT <Zda>.S, <Zn>.H, <Zm>.H[<imm>]
5685+     theEmitter->emitIns_R_R_R_I (INS_sve_fdot, EA_SCALABLE, REG_V4, REG_V6, REG_V3, 1 ,
5686+                                 INS_OPTS_SCALABLE_H); //  FDOT <Zda>.S, <Zn>.H, <Zm>.H[<imm>]
5687+     theEmitter->emitIns_R_R_R_I (INS_sve_bfdot, EA_SCALABLE, REG_V8, REG_V10, REG_V5, 2 ,
5688+                                 INS_OPTS_SCALABLE_H); //  BFDOT <Zda>.S, <Zn>.H, <Zm>.H[<imm>]
5689+     theEmitter->emitIns_R_R_R_I (INS_sve_bfdot, EA_SCALABLE, REG_V12, REG_V14, REG_V7, 3 ,
5690+                                 INS_OPTS_SCALABLE_H); //  BFDOT <Zda>.S, <Zn>.H, <Zm>.H[<imm>]
5691+ 
56225692    //  IF_SVE_HE_3A
56235693    theEmitter->emitIns_R_R_R (INS_sve_faddv, EA_2BYTE, REG_V21, REG_P7, REG_V7,
56245694                              INS_OPTS_SCALABLE_H); //  FADDV   <V><d>, <Pg>, <Zn>.<T>
@@ -5892,6 +5962,36 @@ void CodeGen::genArm64EmitterUnitTestsSve()
58925962    theEmitter->emitIns_R_R_R_I (INS_sve_mul, EA_SCALABLE, REG_V22, REG_V23, REG_V15, 1 ,
58935963                                INS_OPTS_SCALABLE_D); //  MUL <Zd>.D, <Zn>.D, <Zm>.D[<imm>]
58945964
5965+     //  IF_SVE_FF_3A
5966+     theEmitter->emitIns_R_R_R_I (INS_sve_mla, EA_SCALABLE, REG_V0, REG_V1, REG_V1, 1 ,
5967+                                 INS_OPTS_SCALABLE_H); //  MLA <Zda>.H, <Zn>.H, <Zm>.H[<imm>]
5968+     theEmitter->emitIns_R_R_R_I (INS_sve_mla, EA_SCALABLE, REG_V2, REG_V3, REG_V3, 3 ,
5969+                                 INS_OPTS_SCALABLE_H); //  MLA <Zda>.H, <Zn>.H, <Zm>.H[<imm>]
5970+     theEmitter->emitIns_R_R_R_I (INS_sve_mls, EA_SCALABLE, REG_V4, REG_V5, REG_V5, 5 ,
5971+                                 INS_OPTS_SCALABLE_H); //  MLS <Zda>.H, <Zn>.H, <Zm>.H[<imm>]
5972+     theEmitter->emitIns_R_R_R_I (INS_sve_mls, EA_SCALABLE, REG_V6, REG_V7, REG_V7, 7 ,
5973+                                 INS_OPTS_SCALABLE_H); //  MLS <Zda>.H, <Zn>.H, <Zm>.H[<imm>]
5974+ 
5975+     //  IF_SVE_FF_3B
5976+     theEmitter->emitIns_R_R_R_I (INS_sve_mla, EA_SCALABLE, REG_V8, REG_V9, REG_V1, 0 ,
5977+                                 INS_OPTS_SCALABLE_S); //  MLA <Zda>.S, <Zn>.S, <Zm>.S[<imm>]
5978+     theEmitter->emitIns_R_R_R_I (INS_sve_mla, EA_SCALABLE, REG_V10, REG_V11, REG_V3, 1 ,
5979+                                 INS_OPTS_SCALABLE_S); //  MLA <Zda>.S, <Zn>.S, <Zm>.S[<imm>]
5980+     theEmitter->emitIns_R_R_R_I (INS_sve_mls, EA_SCALABLE, REG_V12, REG_V13, REG_V5, 2 ,
5981+                                 INS_OPTS_SCALABLE_S); //  MLS <Zda>.S, <Zn>.S, <Zm>.S[<imm>]
5982+     theEmitter->emitIns_R_R_R_I (INS_sve_mls, EA_SCALABLE, REG_V14, REG_V15, REG_V7, 3 ,
5983+                                 INS_OPTS_SCALABLE_S); //  MLS <Zda>.S, <Zn>.S, <Zm>.S[<imm>]
5984+ 
5985+     //  IF_SVE_FF_3C
5986+     theEmitter->emitIns_R_R_R_I (INS_sve_mla, EA_SCALABLE, REG_V16, REG_V17, REG_V0, 0 ,
5987+                                 INS_OPTS_SCALABLE_D); //  MLA <Zda>.D, <Zn>.D, <Zm>.D[<imm>]
5988+     theEmitter->emitIns_R_R_R_I (INS_sve_mla, EA_SCALABLE, REG_V18, REG_V19, REG_V5, 1 ,
5989+                                 INS_OPTS_SCALABLE_D); //  MLA <Zda>.D, <Zn>.D, <Zm>.D[<imm>]
5990+     theEmitter->emitIns_R_R_R_I (INS_sve_mls, EA_SCALABLE, REG_V20, REG_V21, REG_V10, 0 ,
5991+                                 INS_OPTS_SCALABLE_D); //  MLS <Zda>.D, <Zn>.D, <Zm>.D[<imm>]
5992+     theEmitter->emitIns_R_R_R_I (INS_sve_mls, EA_SCALABLE, REG_V22, REG_V23, REG_V15, 1 ,
5993+                                 INS_OPTS_SCALABLE_D); //  MLS <Zda>.D, <Zn>.D, <Zm>.D[<imm>]
5994+ 
58955995    //  IF_SVE_ED_1A
58965996    theEmitter->emitIns_R_I (INS_sve_smax, EA_SCALABLE, REG_V0, -128 ,
58975997                            INS_OPTS_SCALABLE_B); //  SMAX <Zdn>.<T>, <Zdn>.<T>, #<imm>
0 commit comments