Skip to content

Commit

Permalink
[SveEmitter] Add builtins for SVE2 saturating shift left and addition
Browse files Browse the repository at this point in the history
This patch adds builtins for:
- svqrshl
- svqshl
- svsqadd
- svuqadd
  • Loading branch information
sdesmalen-arm committed May 7, 2020
1 parent b32d14c commit dc2986f
Show file tree
Hide file tree
Showing 6 changed files with 2,307 additions and 0 deletions.
22 changes: 22 additions & 0 deletions clang/include/clang/Basic/arm_sve.td
Expand Up @@ -1274,6 +1274,28 @@ defm SVRECPE : SInstZPZ<"svrecpe", "Ui", "aarch64_sve_urecpe">;
defm SVRSQRTE : SInstZPZ<"svrsqrte", "Ui", "aarch64_sve_ursqrte">;
}

//------------------------------------------------------------------------------

multiclass SInstZPZxZ<string name, string types, string pat_v, string pat_n, string intrinsic, list<FlagType> flags=[]> {
def _M : SInst<name # "[_{d}]", pat_v, types, MergeOp1, intrinsic, flags>;
def _X : SInst<name # "[_{d}]", pat_v, types, MergeAny, intrinsic, flags>;
def _Z : SInst<name # "[_{d}]", pat_v, types, MergeZero, intrinsic, flags>;

def _N_M : SInst<name # "[_n_{d}]", pat_n, types, MergeOp1, intrinsic, flags>;
def _N_X : SInst<name # "[_n_{d}]", pat_n, types, MergeAny, intrinsic, flags>;
def _N_Z : SInst<name # "[_n_{d}]", pat_n, types, MergeZero, intrinsic, flags>;
}

let ArchGuard = "defined(__ARM_FEATURE_SVE2)" in {
defm SVQRSHL_S : SInstZPZxZ<"svqrshl", "csil", "dPdx", "dPdK", "aarch64_sve_sqrshl">;
defm SVQRSHL_U : SInstZPZxZ<"svqrshl", "UcUsUiUl", "dPdx", "dPdK", "aarch64_sve_uqrshl">;
defm SVQSHL_S : SInstZPZxZ<"svqshl", "csil", "dPdx", "dPdK", "aarch64_sve_sqshl">;
defm SVQSHL_U : SInstZPZxZ<"svqshl", "UcUsUiUl", "dPdx", "dPdK", "aarch64_sve_uqshl">;
defm SVRSHL_S : SInstZPZxZ<"svrshl", "csil", "dPdx", "dPdK", "aarch64_sve_srshl">;
defm SVRSHL_U : SInstZPZxZ<"svrshl", "UcUsUiUl", "dPdx", "dPdK", "aarch64_sve_urshl">;
defm SVSQADD : SInstZPZxZ<"svsqadd", "UcUsUiUl", "dPdx", "dPdK", "aarch64_sve_usqadd">;
defm SVUQADD : SInstZPZxZ<"svuqadd", "csil", "dPdu", "dPdL", "aarch64_sve_suqadd">;
}
////////////////////////////////////////////////////////////////////////////////
// SVE2 - Non-temporal gather/scatter
let ArchGuard = "defined(__ARM_FEATURE_SVE2)" in {
Expand Down

0 comments on commit dc2986f

Please sign in to comment.