Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
299 changes: 224 additions & 75 deletions src/mono/mono/arch/s390x/s390x-codegen.h

Large diffs are not rendered by default.

168 changes: 168 additions & 0 deletions src/mono/mono/mini/cpu-s390x.mdesc
Original file line number Diff line number Diff line change
Expand Up @@ -472,3 +472,171 @@ s390_cij: len:24
s390_cij_un: src1:i len:24
s390_cgij: len:24
s390_cgij_un: len:24

insert_i1: dest:x src1:x src2:i len:12
insert_i2: dest:x src1:x src2:i len:12
insert_i4: dest:x src1:x src2:i len:12
insert_i8: dest:x src1:x src2:i len:12
insert_r4: dest:x src1:x src2:f clob:1 len:12
insert_r8: dest:x src1:x src2:f clob:1 len:12

extract_i1: dest:i src1:x len:6
extract_i2: dest:i src1:x len:6
extract_i4: dest:i src1:x len:6
extract_i8: dest:i src1:x len:6
extract_r4: dest:f src1:x len:12
extract_r8: dest:f src1:x len:12

xextract_i1: dest:i src1:x src2:i len:6
xextract_i2: dest:i src1:x src2:i len:6
xextract_i4: dest:i src1:x src2:i len:6
xextract_i8: dest:i src1:x src2:i len:6
xextract_r4: dest:f src1:x src2:i len:10
xextract_r8: dest:f src1:x src2:i len:10

expand_i1: dest:x src1:i len:12
expand_i2: dest:x src1:i len:12
expand_i4: dest:x src1:i len:12
expand_i8: dest:x src1:i len:12
expand_r4: dest:x src1:f len:18
expand_r8: dest:x src1:f len:16

xones: dest:x len:6
xmove: dest:x src1:x len:6
xzero: dest:x len:6
loadx_membase: dest:x src1:b len:26
storex_membase: dest:b src1:x len:26
s390_vab: dest:x src1:x src2:x len:6
s390_vah: dest:x src1:x src2:x len:6
s390_vaf: dest:x src1:x src2:x len:6
s390_vag: dest:x src1:x src2:x len:6
s390_vfasb: dest:x src1:x src2:x len:6
s390_vfadb: dest:x src1:x src2:x len:6
s390_vsb: dest:x src1:x src2:x len:6
s390_vsh: dest:x src1:x src2:x len:6
s390_vsf: dest:x src1:x src2:x len:6
s390_vsg: dest:x src1:x src2:x len:6
s390_vfssb: dest:x src1:x src2:x len:6
s390_vfsdb: dest:x src1:x src2:x len:6
s390_vx: dest:x src1:x src2:x len:6
s390_vo: dest:x src1:x src2:x len:6
s390_vno: dest:x src1:x src2:x len:6
s390_vn: dest:x src1:x src2:x len:6
vector_andnot: dest:x src1:x src2:x len:6
s390_vnn: dest:x src1:x src2:x len:6
s390_vmlb: dest:x src1:x src2:x len:6
s390_vmlhw: dest:x src1:x src2:x len:6
s390_vmlf: dest:x src1:x src2:x len:6
s390_vfmsb: dest:x src1:x src2:x len:6
s390_vfmdb: dest:x src1:x src2:x len:6
s390_vfdsb: dest:x src1:x src2:x len:6
s390_vfddb: dest:x src1:x src2:x len:6
s390_vmxb: dest:x src1:x src2:x len:6
s390_vmxh: dest:x src1:x src2:x len:6
s390_vmxf: dest:x src1:x src2:x len:6
s390_vmxg: dest:x src1:x src2:x len:6
s390_vmnb: dest:x src1:x src2:x len:6
s390_vmnh: dest:x src1:x src2:x len:6
s390_vmnf: dest:x src1:x src2:x len:6
s390_vmng: dest:x src1:x src2:x len:6
s390_vmxlb: dest:x src1:x src2:x len:6
s390_vmxlh: dest:x src1:x src2:x len:6
s390_vmxlf: dest:x src1:x src2:x len:6
s390_vmxlg: dest:x src1:x src2:x len:6
s390_vfmaxsb: dest:x src1:x src2:x len:6
s390_vfmaxdb: dest:x src1:x src2:x len:6
s390_vmnlb: dest:x src1:x src2:x len:6
s390_vmnlh: dest:x src1:x src2:x len:6
s390_vmnlf: dest:x src1:x src2:x len:6
s390_vmnlg: dest:x src1:x src2:x len:6
s390_vfminsb: dest:x src1:x src2:x len:6
s390_vfmindb: dest:x src1:x src2:x len:6
s390_vsumb: dest:x src1:x src2:x len:6
s390_vsumh: dest:x src1:x src2:x len:6
s390_vsumqf: dest:x src1:x src2:x len:6
s390_vsumqg: dest:x src1:x src2:x len:6
s390_vperm: dest:x src1:x src2:x len:6
s390_vrepib: dest:x len:6
s390_vrepih: dest:x len:6
s390_vrepif: dest:x len:6
s390_vrepig: dest:x len:6
s390_vceqbs: dest:x src1:x src2:x len:6
s390_vceqhs: dest:x src1:x src2:x len:6
s390_vceqfs: dest:x src1:x src2:x len:6
s390_vceqgs: dest:x src1:x src2:x len:6
s390_vceqb: dest:x src1:x src2:x len:6
s390_vceqh: dest:x src1:x src2:x len:6
s390_vceqf: dest:x src1:x src2:x len:6
s390_vceqg: dest:x src1:x src2:x len:6
s390_vfcesbs: dest:x src1:x src2:x len:6
s390_vfcedbs: dest:x src1:x src2:x len:6
s390_vfchsbs: dest:x src1:x src2:x len:6
s390_vfchdbs: dest:x src1:x src2:x len:6
s390_vfcesb: dest:x src1:x src2:x len:6
s390_vfcedb: dest:x src1:x src2:x len:6
s390_vfchsb: dest:x src1:x src2:x len:6
s390_vfchdb: dest:x src1:x src2:x len:6
s390_vgmb: dest:x src1:i src2:i len:6
s390_vgmh: dest:x src1:i src2:i len:6
s390_vgmf: dest:x src1:i src2:i len:6
s390_vgmg: dest:x src1:i src2:i len:6
s390_vecb: dest:x src1:x len:6
s390_vech: dest:x src1:x len:6
s390_vecf: dest:x src1:x len:6
s390_vecg: dest:x src1:x len:6
s390_veclb: dest:x src1:x len:6
s390_veclh: dest:x src1:x len:6
s390_veclf: dest:x src1:x len:6
s390_veclg: dest:x src1:x len:6
s390_vchbs: dest:x src1:x src2:x len:6
s390_vchhs: dest:x src1:x src2:x len:6
s390_vchfs: dest:x src1:x src2:x len:6
s390_vchgs: dest:x src1:x src2:x len:6
s390_vchb: dest:x src1:x src2:x len:6
s390_vchh: dest:x src1:x src2:x len:6
s390_vchf: dest:x src1:x src2:x len:6
s390_vchg: dest:x src1:x src2:x len:6
s390_vfsqsb: dest:x src1:x len:6
s390_vfsqdb: dest:x src1:x len:6
s390_vchlbs: dest:x src1:x src2:x len:6
s390_vchlhs: dest:x src1:x src2:x len:6
s390_vchlfs: dest:x src1:x src2:x len:6
s390_vchlgs: dest:x src1:x src2:x len:6
s390_vchlb: dest:x src1:x src2:x len:6
s390_vchlh: dest:x src1:x src2:x len:6
s390_vchlf: dest:x src1:x src2:x len:6
s390_vchlg: dest:x src1:x src2:x len:6
s390_vfchesbs: dest:x src1:x src2:x len:6
s390_vfchedbs: dest:x src1:x src2:x len:6
s390_vfchesb: dest:x src1:x src2:x len:6
s390_vfchedb: dest:x src1:x src2:x len:6
s390_vlpb: dest:x src1:x len:6
s390_vlph: dest:x src1:x len:6
s390_vlpf: dest:x src1:x len:6
s390_vlpg: dest:x src1:x len:6
s390_vflpdb: dest:x src1:x len:6
s390_vflpsb: dest:x src1:x len:6
s390_vflcdb: dest:x src1:x len:6
s390_vflcsb: dest:x src1:x len:6
s390_vpkh: dest:x src1:x src2:x len:6
s390_vpkf: dest:x src1:x src2:x len:6
s390_vpkg: dest:x src1:x src2:x len:6
s390_vlcb: dest:x src1:x len:6
s390_vlch: dest:x src1:x len:6
s390_vlcf: dest:x src1:x len:6
s390_vlcg: dest:x src1:x len:6
s390_vuplb: dest:x src1:x len:6
s390_vuplhw: dest:x src1:x len:6
s390_vuplf: dest:x src1:x len:6
s390_vupllb: dest:x src1:x len:6
s390_vupllh: dest:x src1:x len:6
s390_vupllf: dest:x src1:x len:6
s390_vuphb: dest:x src1:x len:6
s390_vuphh: dest:x src1:x len:6
s390_vuphf: dest:x src1:x len:6
s390_vuplhb: dest:x src1:x len:6
s390_vuplhh: dest:x src1:x len:6
s390_vuplhf: dest:x src1:x len:6
s390_vfisb: dest:x src1:x len:6
s390_vfidb: dest:x src1:x len:6
xconst: dest:x len:18
150 changes: 143 additions & 7 deletions src/mono/mono/mini/mini-ops.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,6 @@ MINI_OP(OP_STORER8_MEMBASE_REG, "storer8_membase_reg", IREG, FREG, NONE)

#if defined(TARGET_X86) || defined(TARGET_AMD64)
MINI_OP(OP_STOREX_MEMBASE_REG, "storex_membase_reg", IREG, XREG, NONE)
MINI_OP(OP_STOREX_ALIGNED_MEMBASE_REG, "storex_aligned_membase_reg", IREG, XREG, NONE)
MINI_OP(OP_STOREX_NTA_MEMBASE_REG, "storex_nta_membase_reg", IREG, XREG, NONE)
#endif

Expand Down Expand Up @@ -149,8 +148,9 @@ MINI_OP(OP_LOADR8_MEMBASE,"loadr8_membase", FREG, IREG, NONE)
/* klass must be set to a simd class */
MINI_OP(OP_LOADX_MEMBASE, "loadx_membase", XREG, IREG, NONE)

#if defined(TARGET_X86) || defined(TARGET_AMD64)
#if defined(TARGET_X86) || defined(TARGET_AMD64) || defined(TARGET_S390X)
MINI_OP(OP_LOADX_ALIGNED_MEMBASE, "loadx_aligned_membase", XREG, IREG, NONE)
MINI_OP(OP_STOREX_ALIGNED_MEMBASE_REG, "storex_aligned_membase_reg", IREG, XREG, NONE)
#endif

MINI_OP(OP_LOADV_MEMBASE, "loadv_membase", VREG, IREG, NONE)
Expand Down Expand Up @@ -1049,8 +1049,6 @@ MINI_OP(OP_CVTPS2PD, "cvtps2pd", XREG, XREG, NONE)
MINI_OP(OP_CVTTPD2DQ, "cvttpd2dq", XREG, XREG, NONE)
MINI_OP(OP_CVTTPS2DQ, "cvttps2dq", XREG, XREG, NONE)

MINI_OP(OP_VECTOR_IABS, "vector_integer_abs", XREG, XREG, NONE)
MINI_OP(OP_VECTOR_ANDN, "vector_andnot", XREG, XREG, XREG)

/* sse 1 */
/* inst_c1 is target type */
Expand Down Expand Up @@ -1498,6 +1496,139 @@ MINI_OP(OP_S390_CIJ, "s390_cij", IREG, NONE, NONE)
MINI_OP(OP_S390_CLIJ, "s390_cij_un", IREG, IREG, NONE)
MINI_OP(OP_S390_CGIJ, "s390_cgij", LREG, NONE, NONE)
MINI_OP(OP_S390_CLGIJ, "s390_cgij_un", LREG, NONE, NONE)
MINI_OP(OP_S390_VAB, "s390_vab", XREG, XREG, XREG)
MINI_OP(OP_S390_VAH, "s390_vah", XREG, XREG, XREG)
MINI_OP(OP_S390_VAF, "s390_vaf", XREG, XREG, XREG)
MINI_OP(OP_S390_VAG, "s390_vag", XREG, XREG, XREG)
MINI_OP(OP_S390_VFASB, "s390_vfasb", XREG, XREG, XREG)
MINI_OP(OP_S390_VFADB, "s390_vfadb", XREG, XREG, XREG)
MINI_OP(OP_S390_VSB, "s390_vsb", XREG, XREG, XREG)
MINI_OP(OP_S390_VSH, "s390_vsh", XREG, XREG, XREG)
MINI_OP(OP_S390_VSF, "s390_vsf", XREG, XREG, XREG)
MINI_OP(OP_S390_VSG, "s390_vsg", XREG, XREG, XREG)
MINI_OP(OP_S390_VFSSB, "s390_vfssb", XREG, XREG, XREG)
MINI_OP(OP_S390_VFSDB, "s390_vfsdb", XREG, XREG, XREG)
MINI_OP(OP_S390_VMLB, "s390_vmlb", XREG, XREG, XREG)
MINI_OP(OP_S390_VMLHW, "s390_vmlhw", XREG, XREG, XREG)
MINI_OP(OP_S390_VMLF, "s390_vmlf", XREG, XREG, XREG)
MINI_OP(OP_S390_VFMSB, "s390_vfmsb", XREG, XREG, XREG)
MINI_OP(OP_S390_VFMDB, "s390_vfmdb", XREG, XREG, XREG)
MINI_OP(OP_S390_VFDSB, "s390_vfdsb", XREG, XREG, XREG)
MINI_OP(OP_S390_VFDDB, "s390_vfddb", XREG, XREG, XREG)
MINI_OP(OP_S390_VMXB, "s390_vmxb", XREG, XREG, XREG)
MINI_OP(OP_S390_VMXH, "s390_vmxh", XREG, XREG, XREG)
MINI_OP(OP_S390_VMXF, "s390_vmxf", XREG, XREG, XREG)
MINI_OP(OP_S390_VMXG, "s390_vmxg", XREG, XREG, XREG)
MINI_OP(OP_S390_VFMAXSB, "s390_vfmaxsb", XREG, XREG, XREG)
MINI_OP(OP_S390_VFMAXDB, "s390_vfmaxdb", XREG, XREG, XREG)
MINI_OP(OP_S390_VMNB, "s390_vmnb", XREG, XREG, XREG)
MINI_OP(OP_S390_VMNH, "s390_vmnh", XREG, XREG, XREG)
MINI_OP(OP_S390_VMNF, "s390_vmnf", XREG, XREG, XREG)
MINI_OP(OP_S390_VMNG, "s390_vmng", XREG, XREG, XREG)
MINI_OP(OP_S390_VFMINSB, "s390_vfminsb", XREG, XREG, XREG)
MINI_OP(OP_S390_VFMINDB, "s390_vfmindb", XREG, XREG, XREG)
MINI_OP(OP_S390_VMXLB, "s390_vmxlb", XREG, XREG, XREG)
MINI_OP(OP_S390_VMXLH, "s390_vmxlh", XREG, XREG, XREG)
MINI_OP(OP_S390_VMXLF, "s390_vmxlf", XREG, XREG, XREG)
MINI_OP(OP_S390_VMXLG, "s390_vmxlg", XREG, XREG, XREG)
MINI_OP(OP_S390_VMNLB, "s390_vmnlb", XREG, XREG, XREG)
MINI_OP(OP_S390_VMNLH, "s390_vmnlh", XREG, XREG, XREG)
MINI_OP(OP_S390_VMNLF, "s390_vmnlf", XREG, XREG, XREG)
MINI_OP(OP_S390_VMNLG, "s390_vmnlg", XREG, XREG, XREG)
MINI_OP(OP_S390_VO, "s390_vo", XREG, XREG, XREG)
MINI_OP(OP_S390_VNO, "s390_vno", XREG, XREG, XREG)
MINI_OP(OP_S390_VX, "s390_vx", XREG, XREG, XREG)
MINI_OP(OP_S390_VN, "s390_vn", XREG, XREG, XREG)
MINI_OP(OP_S390_VNN, "s390_vnn", XREG, XREG, XREG)
MINI_OP(OP_S390_VSUMB, "s390_vsumb", XREG, XREG, XREG)
MINI_OP(OP_S390_VSUMH, "s390_vsumh", XREG, XREG, XREG)
MINI_OP(OP_S390_VSUMQF, "s390_vsumqf", XREG, XREG, XREG)
MINI_OP(OP_S390_VSUMQG, "s390_vsumqg", XREG, XREG, XREG)
MINI_OP(OP_S390_VPERM, "s390_vperm", XREG, XREG, XREG)
MINI_OP(OP_S390_VREPIB, "s390_vrepib", XREG, NONE, NONE)
MINI_OP(OP_S390_VREPIH, "s390_vrepih", XREG, NONE, NONE)
MINI_OP(OP_S390_VREPIF, "s390_vrepif", XREG, NONE, NONE)
MINI_OP(OP_S390_VREPIG, "s390_vrepig", XREG, NONE, NONE)
MINI_OP(OP_S390_VFSQSB, "s390_vfsqsb", XREG, XREG, NONE)
MINI_OP(OP_S390_VFSQDB, "s390_vfsqdb", XREG, XREG, NONE)
MINI_OP(OP_S390_VFCESBS, "s390_vfcesbs", XREG, XREG, XREG)
MINI_OP(OP_S390_VFCEDBS, "s390_vfcedbs", XREG, XREG, XREG)
MINI_OP(OP_S390_VFCHSBS, "s390_vfchsbs", XREG, XREG, XREG)
MINI_OP(OP_S390_VFCHDBS, "s390_vfchdbs", XREG, XREG, XREG)
MINI_OP(OP_S390_VFCESB, "s390_vfcesb", XREG, XREG, XREG)
MINI_OP(OP_S390_VFCEDB, "s390_vfcedb", XREG, XREG, XREG)
MINI_OP(OP_S390_VFCHSB, "s390_vfchsb", XREG, XREG, XREG)
MINI_OP(OP_S390_VFCHDB, "s390_vfchdb", XREG, XREG, XREG)
MINI_OP(OP_S390_VCEQBS, "s390_vceqbs", XREG, XREG, XREG)
MINI_OP(OP_S390_VCEQHS, "s390_vceqhs", XREG, XREG, XREG)
MINI_OP(OP_S390_VCEQFS, "s390_vceqfs", XREG, XREG, XREG)
MINI_OP(OP_S390_VCEQGS, "s390_vceqgs", XREG, XREG, XREG)
MINI_OP(OP_S390_VCEQB, "s390_vceqb", XREG, XREG, XREG)
MINI_OP(OP_S390_VCEQH, "s390_vceqh", XREG, XREG, XREG)
MINI_OP(OP_S390_VCEQF, "s390_vceqf", XREG, XREG, XREG)
MINI_OP(OP_S390_VCEQG, "s390_vceqg", XREG, XREG, XREG)
MINI_OP(OP_S390_VGMB, "s390_vgmb", XREG, IREG, IREG)
MINI_OP(OP_S390_VGMH, "s390_vgmh", XREG, IREG, IREG)
MINI_OP(OP_S390_VGMF, "s390_vgmf", XREG, IREG, IREG)
MINI_OP(OP_S390_VGMG, "s390_vgmg", XREG, IREG, IREG)
MINI_OP(OP_S390_VECB, "s390_vecb", XREG, XREG, NONE)
MINI_OP(OP_S390_VECF, "s390_vecf", XREG, XREG, NONE)
MINI_OP(OP_S390_VECH, "s390_vech", XREG, XREG, NONE)
MINI_OP(OP_S390_VECG, "s390_vecg", XREG, XREG, NONE)
MINI_OP(OP_S390_VECLB, "s390_veclb", XREG, XREG, NONE)
MINI_OP(OP_S390_VECLF, "s390_veclf", XREG, XREG, NONE)
MINI_OP(OP_S390_VECLH, "s390_veclh", XREG, XREG, NONE)
MINI_OP(OP_S390_VECLG, "s390_veclg", XREG, XREG, NONE)
MINI_OP(OP_S390_VCHBS, "s390_vchbs", XREG, XREG, XREG)
MINI_OP(OP_S390_VCHHS, "s390_vchhs", XREG, XREG, XREG)
MINI_OP(OP_S390_VCHFS, "s390_vchfs", XREG, XREG, XREG)
MINI_OP(OP_S390_VCHGS, "s390_vchgs", XREG, XREG, XREG)
MINI_OP(OP_S390_VCHB, "s390_vchb", XREG, XREG, XREG)
MINI_OP(OP_S390_VCHH, "s390_vchh", XREG, XREG, XREG)
MINI_OP(OP_S390_VCHF, "s390_vchf", XREG, XREG, XREG)
MINI_OP(OP_S390_VCHG, "s390_vchg", XREG, XREG, XREG)
MINI_OP(OP_S390_VCHLBS, "s390_vchlbs", XREG, XREG, XREG)
MINI_OP(OP_S390_VCHLHS, "s390_vchlhs", XREG, XREG, XREG)
MINI_OP(OP_S390_VCHLFS, "s390_vchlfs", XREG, XREG, XREG)
MINI_OP(OP_S390_VCHLGS, "s390_vchlgs", XREG, XREG, XREG)
MINI_OP(OP_S390_VCHLB, "s390_vchlb", XREG, XREG, XREG)
MINI_OP(OP_S390_VCHLH, "s390_vchlh", XREG, XREG, XREG)
MINI_OP(OP_S390_VCHLF, "s390_vchlf", XREG, XREG, XREG)
MINI_OP(OP_S390_VCHLG, "s390_vchlg", XREG, XREG, XREG)
MINI_OP(OP_S390_VFCHESBS, "s390_vfchesbs", XREG, XREG, XREG)
MINI_OP(OP_S390_VFCHEDBS, "s390_vfchedbs", XREG, XREG, XREG)
MINI_OP(OP_S390_VFCHESB, "s390_vfchesb", XREG, XREG, XREG)
MINI_OP(OP_S390_VFCHEDB, "s390_vfchedb", XREG, XREG, XREG)
MINI_OP(OP_S390_VLPB, "s390_vlpb", XREG, XREG, NONE)
MINI_OP(OP_S390_VLPH, "s390_vlph", XREG, XREG, NONE)
MINI_OP(OP_S390_VLPF, "s390_vlpf", XREG, XREG, NONE)
MINI_OP(OP_S390_VLPG, "s390_vlpg", XREG, XREG, NONE)
MINI_OP(OP_S390_VFLPDB, "s390_vflpdb", XREG, XREG, NONE)
MINI_OP(OP_S390_VFLPSB, "s390_vflpsb", XREG, XREG, NONE)
MINI_OP(OP_S390_VFLCDB, "s390_vflcdb", XREG, XREG, NONE)
MINI_OP(OP_S390_VFLCSB, "s390_vflcsb", XREG, XREG, NONE)
MINI_OP(OP_S390_VPKH, "s390_vpkh", XREG, XREG, XREG)
MINI_OP(OP_S390_VPKF, "s390_vpkf", XREG, XREG, XREG)
MINI_OP(OP_S390_VPKG, "s390_vpkg", XREG, XREG, XREG)
MINI_OP(OP_S390_VLCB, "s390_vlcb", XREG, XREG, NONE)
MINI_OP(OP_S390_VLCH, "s390_vlch", XREG, XREG, NONE)
MINI_OP(OP_S390_VLCF, "s390_vlcf", XREG, XREG, NONE)
MINI_OP(OP_S390_VLCG, "s390_vlcg", XREG, XREG, NONE)
MINI_OP(OP_S390_VUPHB, "s390_vuphb", XREG, XREG, NONE)
MINI_OP(OP_S390_VUPHH, "s390_vuphh", XREG, XREG, NONE)
MINI_OP(OP_S390_VUPHF, "s390_vuphf", XREG, XREG, NONE)
MINI_OP(OP_S390_VUPLB, "s390_vuplb", XREG, XREG, NONE)
MINI_OP(OP_S390_VUPLHW, "s390_vuplhw", XREG, XREG, NONE)
MINI_OP(OP_S390_VUPLF, "s390_vuplf", XREG, XREG, NONE)
MINI_OP(OP_S390_VUPLHB, "s390_vuplhb", XREG, XREG, NONE)
MINI_OP(OP_S390_VUPLHH, "s390_vuplhh", XREG, XREG, NONE)
MINI_OP(OP_S390_VUPLHF, "s390_vuplhf", XREG, XREG, NONE)
MINI_OP(OP_S390_VUPLLB, "s390_vupllb", XREG, XREG, NONE)
MINI_OP(OP_S390_VUPLLH, "s390_vupllh", XREG, XREG, NONE)
MINI_OP(OP_S390_VUPLLF, "s390_vupllf", XREG, XREG, NONE)
MINI_OP(OP_S390_VFISB, "s390_vfidb", XREG, XREG, NONE)
MINI_OP(OP_S390_VFIDB, "s390_vfisb", XREG, XREG, NONE)
MINI_OP(OP_S390_XCOMPARE_XEXTRACT, "s390_xcompare_xextract", IREG, XREG, XREG)
#endif

#if defined(TARGET_ARM64)
Expand Down Expand Up @@ -1862,7 +1993,6 @@ MINI_OP(OP_SIMD_LOAD_SCALAR_R8, "simd_load_scalar_r8", XREG, IREG, NONE)
MINI_OP(OP_SIMD_STORE, "simd_store", NONE, XREG, XREG)

#if defined(TARGET_ARM64) || defined(TARGET_AMD64) || defined(TARGET_WASM)
MINI_OP(OP_ONES_COMPLEMENT, "ones_complement", XREG, XREG, NONE)
MINI_OP(OP_CVT_FP_UI, "convert_fp_to_ui", XREG, XREG, NONE)
MINI_OP(OP_CVT_FP_SI, "convert_fp_to_si", XREG, XREG, NONE)
MINI_OP(OP_CVT_FP_UI_SCALAR, "convert_fp_to_ui_scalar", XREG, XREG, NONE)
Expand All @@ -1872,11 +2002,17 @@ MINI_OP(OP_CVT_SI_FP, "convert_si_to_fp", XREG, XREG, NONE)
MINI_OP(OP_CVT_UI_FP_SCALAR, "convert_ui_to_fp_scalar", XREG, XREG, NONE)
MINI_OP(OP_CVT_SI_FP_SCALAR, "convert_si_to_fp_scalar", XREG, XREG, NONE)
/* inst_c1 is one of the MONO_TYPE_ constants */
MINI_OP(OP_NEGATION, "negate", XREG, XREG, NONE)
MINI_OP(OP_NEGATION_SCALAR, "negate_scalar", XREG, XREG, NONE)
#endif // TARGET_ARM64 || TARGET_AMD64 || TARGET_WASM

#if defined(TARGET_ARM64) || defined(TARGET_AMD64) || defined(TARGET_WASM) || defined(TARGET_S390X)
MINI_OP(OP_NEGATION, "negate", XREG, XREG, NONE)
MINI_OP(OP_ONES_COMPLEMENT, "ones_complement", XREG, XREG, NONE)
/* Select bits from src2/src3 using src1 */
MINI_OP3(OP_BSL, "bitwise_select", XREG, XREG, XREG, XREG)
#endif // TARGET_ARM64 || TARGET_AMD64 || TARGET_WASM
MINI_OP(OP_VECTOR_ANDN, "vector_andnot", XREG, XREG, XREG)
MINI_OP(OP_VECTOR_IABS, "vector_integer_abs", XREG, XREG, NONE)
#endif

#if defined(TARGET_RISCV64) || defined(TARGET_RISCV32)
MINI_OP(OP_RISCV_EXC_BEQ, "riscv_exc_beq", NONE, IREG, IREG)
Expand Down
2 changes: 1 addition & 1 deletion src/mono/mono/mini/mini-runtime.c
Original file line number Diff line number Diff line change
Expand Up @@ -4496,7 +4496,7 @@ init_class (MonoClass *klass)
}
#endif

#ifdef TARGET_ARM64
#if defined(TARGET_ARM64) || defined(TARGET_S390X)
if (!strcmp (m_class_get_name_space (klass), "System.Numerics")) {
if (!strcmp (name, "Vector2") || !strcmp (name, "Vector3") ||!strcmp (name, "Vector4") || !strcmp (name, "Quaternion") || !strcmp (name, "Plane"))
mono_class_set_is_simd_type (klass, TRUE);
Expand Down
Loading
Loading