<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/86743>86743</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            llvm generates SVE code with only +sme and no streaming mode enabled
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          aemerson
      </td>
    </tr>
</table>

<pre>
    ```
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
target triple = "arm64-apple-darwin"

define i32 @div_crash(<16 x i32> %0, ptr %1) #0 {
  %3 = sdiv <16 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>, %0
  %4 = trunc <16 x i32> %3 to <16 x i8>
  store <16 x i8> %4, ptr %1, align 1
 ret i32 0
}

attributes #0 = { "target-cpu"="generic" }
```

Run:
```
llc -mattr=+sme,+neon
```
on that and you'll get the following code:
```
        .section        __TEXT,__text,regular,pure_instructions
        .globl  _div_crash ; -- Begin function div_crash
        .p2align        2
_div_crash:                             ; @div_crash
        .cfi_startproc
; %bb.0:
        ptrue   p0.s, vl4
        movi.4s v4, #1
                                        ; kill: def $q3 killed $q3 def $z3
                                        ; kill: def $q2 killed $q2 def $z2
                                        ; kill: def $q1 killed $q1 def $z1
                                        ; kill: def $q0 killed $q0 def $z0
        mov     x8, x0
        mov     w0, wzr
        sdivr   z1.s, p0/m, z1.s, z4.s
        sdivr   z0.s, p0/m, z0.s, z4.s
        sdivr   z3.s, p0/m, z3.s, z4.s
        uzp1.8h v0, v0, v1
        sdivr   z2.s, p0/m, z2.s, z4.s
        uzp1.8h v2, v2, v3
        uzp1.16b        v0, v0, v2
        str     q0, [x8]
        ret
        .cfi_endproc
```
without `+sve` there's no guarantee that any of these SVE instructions are legal to execute, since there's no attributes enabling streaming mode.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVt2O6jgMfhpzExWlTlvoBRcDDA-w52i1dyhtTclumvQkKTDz9KsUhp_h7GilsxdboTQ49mfHdr5Ueq9aQ7SAfAn5eiKHsLduIakj562ZVLZ5W0DBLz--Bv4SpGspsEYGqeWbHQIDsWaASEkH4sUmqshAvBRZolKcg3hJcZ4YgWfZtyhDfIAKTvWaPmCk64oskX2vKWmkOypz1T-PDe2UIaYEMsh4ow7b2km_h-hslRbsFJdAvDLAnAOuWB9cnKeAJQMUnMFseYZiUS5Gz75RB_YZQKyilzSC_B8m4jXOx23dws_G8IMbTP0Uf9xcsDfxPEJcTH2wjh6XRrjHjK2Y1Ko1LL2YOQpjMJcIYLa-L40MwalqCOQviY4lnS1jWc-1Tup-iOUUa0BsyZBTNSCyG85js53H3wYD4uWnClrXLOmi3xFz6TsCXAEuDVnzUwtrWNjLwKRp2JsdAGdas7EN98R2Vmt7VKZltW3on5wCL6ee6qCii3K7_f76x3fA1XYb6BQAV47aQUsHuOoHR1tlfHDDqO5vAK22lY7m1w5mIJYsSdiSWmXYbjCjCbt1-NW2x7EqwMvLybiBgHhhXz3Rx8OxuYLWO7X1QbrQO1tfxFEZ86qa8lsueNkHN1B886mPLXLQ2XWtswc1zTzw8pCdu1V89M6_fKLTv5TWcScN7Rhg9kOMEmoufy7id_HryHiPjFdk_HXk9B45vSL_B9ng98j8iszviwC8PM1jAU6fxceRFI_v7iqP3OeAl-_puZ49B9x0cfYhec-m_lmdP6nzr9TFk7r4ifrw3qfT-T420BjoZUyf8fAJD7_GwxHpPIpHhbSoPnvEm8cQ_f0YxZAvT3PIr7RXOgqPZ4hMc3eCHpnjqMJ-vDILHsnqQFDwSDyOAGeeGcvaQTppAtEHS70xu4sqnti331_ZPZkw6YhpaqWOLE8nqocQ6Y95ZWp6xL2jZjKy0pHjfHAkuzjrbEPTSbMQTSlKOaFFOkvTrEyR42S_ELs0xXJOxXwnsnyXilwiz2dNXsxLnFc0UQvkmHGBBWIqMJ3mRbmTdcUFlTnPMgEZp04qPdX60E2tayfK-4EW82KWiYmWFWk_foQgGjqycTHeE_l64hbRJqmG1kPGtfLB31CCCppGBTbeJjLuL6Yp0jeL2WbW6Dd2vhlGzjf2077P-aBmMji92IfQ-8h1uAHctCrsh2pa2w5wE71cXknv7J9UB8DNGKoH3Ixb-TsAAP__U8CBfQ">