message: Replace svm.ld with llvm load for masked_load_blend
diff: @@ -851,28 +851,11 @@ xe_masked_store(double)
  xe_masked_store(i64)
  define(`xe_masked_load', `
  -declare <WIDTH x $1> @llvm.genx.svm.block.ld.unaligned.XE_SUFFIX($1).i64(i64)
  -declare <WIDTH_X2 x $1> @llvm.genx.svm.block.ld.unaligned.XE_SUFFIXN($1, WIDTH_X2).i64(i64)
  -
  ; Blend version is NOT safe w.r.t. crossing page boundaries, even if the mask is off
  ; for the lanes that cross the page boundaries.
  define <WIDTH x $1> @__masked_load_blend_$1(i8 *, <WIDTH x MASK> %mask) nounwind alwaysinline {
  - %bitptr = bitcast i8* %0 to i64*
  - %ptr = ptrtoint i64* %bitptr to i64
  - ;; According to genx.svm.block.ld.unaligned specification the data to load must have
  - ;; a size that is a power of two from 16 to 128.
  - ;; Here we process a special case when the data to read are less then 16 bytes
  - ;; (which can happen for int8 and simd width 8).
  - ifelse($1,i8, `
  - ifelse(WIDTH,8, `
  - %res_tmp = call <16 x $1> @llvm.genx.svm.block.ld.unaligned.XE_SUFFIXN($1, 16).i64(i64 %ptr)
  - %res = shufflevector <16 x $1> %res_tmp, <16 x $1> undef, LINEAR_VECTOR(i32)
  - ',`
  - %res = call <WIDTH x $1> @llvm.genx.svm.block.ld.unaligned.XE_SUFFIX($1).i64(i64 %ptr)
  - ')
  - ',`
  - %res = call <WIDTH x $1> @llvm.genx.svm.block.ld.unaligned.XE_SUFFIX($1).i64(i64 %ptr)
  - ')
  + %bitptr = bitcast i8* %0 to <WIDTH x $1>*
  + %res = load PTR_OP_ARGS(`<WIDTH x $1> ') %bitptr
  %res_masked = select <WIDTH x MASK> %mask, <WIDTH x $1> %res, <WIDTH x $1> undef
  ret <WIDTH x $1> %res_masked
  }
  