xref: /llvm-project/llvm/test/MC/AArch64/arm64-arithmetic-encoding.s (revision daa1c018b0d52c7982854fd0a2a7ec0fb0868f27)
13b0846e8STim Northover; RUN: llvm-mc -triple arm64-apple-darwin -mattr=neon -show-encoding < %s | FileCheck %s
23b0846e8STim Northover
33b0846e8STim Northoverfoo:
43b0846e8STim Northover;==---------------------------------------------------------------------------==
53b0846e8STim Northover; Add/Subtract with carry/borrow
63b0846e8STim Northover;==---------------------------------------------------------------------------==
73b0846e8STim Northover
83b0846e8STim Northover  adc   w1, w2, w3
93b0846e8STim Northover  adc   x1, x2, x3
103b0846e8STim Northover  adcs  w5, w4, w3
113b0846e8STim Northover  adcs  x5, x4, x3
123b0846e8STim Northover
133b0846e8STim Northover; CHECK: adc  w1, w2, w3             ; encoding: [0x41,0x00,0x03,0x1a]
143b0846e8STim Northover; CHECK: adc  x1, x2, x3             ; encoding: [0x41,0x00,0x03,0x9a]
153b0846e8STim Northover; CHECK: adcs w5, w4, w3             ; encoding: [0x85,0x00,0x03,0x3a]
163b0846e8STim Northover; CHECK: adcs x5, x4, x3             ; encoding: [0x85,0x00,0x03,0xba]
173b0846e8STim Northover
183b0846e8STim Northover  sbc   w1, w2, w3
193b0846e8STim Northover  sbc   x1, x2, x3
203b0846e8STim Northover  sbcs  w1, w2, w3
213b0846e8STim Northover  sbcs  x1, x2, x3
223b0846e8STim Northover
233b0846e8STim Northover; CHECK: sbc  w1, w2, w3             ; encoding: [0x41,0x00,0x03,0x5a]
243b0846e8STim Northover; CHECK: sbc  x1, x2, x3             ; encoding: [0x41,0x00,0x03,0xda]
253b0846e8STim Northover; CHECK: sbcs w1, w2, w3             ; encoding: [0x41,0x00,0x03,0x7a]
263b0846e8STim Northover; CHECK: sbcs x1, x2, x3             ; encoding: [0x41,0x00,0x03,0xfa]
273b0846e8STim Northover
283b0846e8STim Northover;==---------------------------------------------------------------------------==
293b0846e8STim Northover; Add/Subtract with (optionally shifted) immediate
303b0846e8STim Northover;==---------------------------------------------------------------------------==
313b0846e8STim Northover
323b0846e8STim Northover  add w3, w4, #1024
333b0846e8STim Northover  add w3, w4, #1024, lsl #0
343b0846e8STim Northover  add x3, x4, #1024
353b0846e8STim Northover  add x3, x4, #1024, lsl #0
363b0846e8STim Northover
373b0846e8STim Northover; CHECK: add w3, w4, #1024           ; encoding: [0x83,0x00,0x10,0x11]
383b0846e8STim Northover; CHECK: add w3, w4, #1024           ; encoding: [0x83,0x00,0x10,0x11]
393b0846e8STim Northover; CHECK: add x3, x4, #1024           ; encoding: [0x83,0x00,0x10,0x91]
403b0846e8STim Northover; CHECK: add x3, x4, #1024           ; encoding: [0x83,0x00,0x10,0x91]
413b0846e8STim Northover
423b0846e8STim Northover  add w3, w4, #1024, lsl #12
433b0846e8STim Northover  add w3, w4, #4194304
443b0846e8STim Northover  add w3, w4, #0, lsl #12
453b0846e8STim Northover  add x3, x4, #1024, lsl #12
463b0846e8STim Northover  add x3, x4, #4194304
473b0846e8STim Northover  add x3, x4, #0, lsl #12
483b0846e8STim Northover  add sp, sp, #32
493b0846e8STim Northover
503b0846e8STim Northover; CHECK: add w3, w4, #1024, lsl #12  ; encoding: [0x83,0x00,0x50,0x11]
513b0846e8STim Northover; CHECK: add w3, w4, #1024, lsl #12  ; encoding: [0x83,0x00,0x50,0x11]
523b0846e8STim Northover; CHECK: add w3, w4, #0, lsl #12     ; encoding: [0x83,0x00,0x40,0x11]
533b0846e8STim Northover; CHECK: add x3, x4, #1024, lsl #12  ; encoding: [0x83,0x00,0x50,0x91]
543b0846e8STim Northover; CHECK: add x3, x4, #1024, lsl #12  ; encoding: [0x83,0x00,0x50,0x91]
553b0846e8STim Northover; CHECK: add x3, x4, #0, lsl #12     ; encoding: [0x83,0x00,0x40,0x91]
563b0846e8STim Northover; CHECK: add sp, sp, #32             ; encoding: [0xff,0x83,0x00,0x91]
573b0846e8STim Northover
583b0846e8STim Northover  adds w3, w4, #1024
593b0846e8STim Northover  adds w3, w4, #1024, lsl #0
603b0846e8STim Northover  adds w3, w4, #1024, lsl #12
613b0846e8STim Northover  adds x3, x4, #1024
623b0846e8STim Northover  adds x3, x4, #1024, lsl #0
633b0846e8STim Northover  adds x3, x4, #1024, lsl #12
643b0846e8STim Northover
653b0846e8STim Northover; CHECK: adds w3, w4, #1024          ; encoding: [0x83,0x00,0x10,0x31]
663b0846e8STim Northover; CHECK: adds w3, w4, #1024          ; encoding: [0x83,0x00,0x10,0x31]
673b0846e8STim Northover; CHECK: adds w3, w4, #1024, lsl #12 ; encoding: [0x83,0x00,0x50,0x31]
683b0846e8STim Northover; CHECK: adds x3, x4, #1024          ; encoding: [0x83,0x00,0x10,0xb1]
693b0846e8STim Northover; CHECK: adds x3, x4, #1024          ; encoding: [0x83,0x00,0x10,0xb1]
703b0846e8STim Northover; CHECK: adds x3, x4, #1024, lsl #12 ; encoding: [0x83,0x00,0x50,0xb1]
713b0846e8STim Northover
723b0846e8STim Northover  sub w3, w4, #1024
733b0846e8STim Northover  sub w3, w4, #1024, lsl #0
743b0846e8STim Northover  sub w3, w4, #1024, lsl #12
753b0846e8STim Northover  sub x3, x4, #1024
763b0846e8STim Northover  sub x3, x4, #1024, lsl #0
773b0846e8STim Northover  sub x3, x4, #1024, lsl #12
783b0846e8STim Northover  sub sp, sp, #32
793b0846e8STim Northover
803b0846e8STim Northover; CHECK: sub w3, w4, #1024           ; encoding: [0x83,0x00,0x10,0x51]
813b0846e8STim Northover; CHECK: sub w3, w4, #1024           ; encoding: [0x83,0x00,0x10,0x51]
823b0846e8STim Northover; CHECK: sub w3, w4, #1024, lsl #12  ; encoding: [0x83,0x00,0x50,0x51]
833b0846e8STim Northover; CHECK: sub x3, x4, #1024           ; encoding: [0x83,0x00,0x10,0xd1]
843b0846e8STim Northover; CHECK: sub x3, x4, #1024           ; encoding: [0x83,0x00,0x10,0xd1]
853b0846e8STim Northover; CHECK: sub x3, x4, #1024, lsl #12  ; encoding: [0x83,0x00,0x50,0xd1]
863b0846e8STim Northover; CHECK: sub sp, sp, #32             ; encoding: [0xff,0x83,0x00,0xd1]
873b0846e8STim Northover
883b0846e8STim Northover  subs w3, w4, #1024
893b0846e8STim Northover  subs w3, w4, #1024, lsl #0
903b0846e8STim Northover  subs w3, w4, #1024, lsl #12
913b0846e8STim Northover  subs x3, x4, #1024
923b0846e8STim Northover  subs x3, x4, #1024, lsl #0
933b0846e8STim Northover  subs x3, x4, #1024, lsl #12
943b0846e8STim Northover
953b0846e8STim Northover; CHECK: subs w3, w4, #1024          ; encoding: [0x83,0x00,0x10,0x71]
963b0846e8STim Northover; CHECK: subs w3, w4, #1024          ; encoding: [0x83,0x00,0x10,0x71]
973b0846e8STim Northover; CHECK: subs w3, w4, #1024, lsl #12 ; encoding: [0x83,0x00,0x50,0x71]
983b0846e8STim Northover; CHECK: subs x3, x4, #1024          ; encoding: [0x83,0x00,0x10,0xf1]
993b0846e8STim Northover; CHECK: subs x3, x4, #1024          ; encoding: [0x83,0x00,0x10,0xf1]
1003b0846e8STim Northover; CHECK: subs x3, x4, #1024, lsl #12 ; encoding: [0x83,0x00,0x50,0xf1]
1013b0846e8STim Northover
1023b0846e8STim Northover;==---------------------------------------------------------------------------==
1033b0846e8STim Northover; Add/Subtract register with (optional) shift
1043b0846e8STim Northover;==---------------------------------------------------------------------------==
1053b0846e8STim Northover
1063b0846e8STim Northover  add w12, w13, w14
1073b0846e8STim Northover  add x12, x13, x14
1083b0846e8STim Northover  add w12, w13, w14, lsl #12
1093b0846e8STim Northover  add x12, x13, x14, lsl #12
1103b0846e8STim Northover  add x12, x13, x14, lsr #42
1113b0846e8STim Northover  add x12, x13, x14, asr #39
1123b0846e8STim Northover
1133b0846e8STim Northover; CHECK: add w12, w13, w14           ; encoding: [0xac,0x01,0x0e,0x0b]
1143b0846e8STim Northover; CHECK: add x12, x13, x14           ; encoding: [0xac,0x01,0x0e,0x8b]
1153b0846e8STim Northover; CHECK: add w12, w13, w14, lsl #12  ; encoding: [0xac,0x31,0x0e,0x0b]
1163b0846e8STim Northover; CHECK: add x12, x13, x14, lsl #12  ; encoding: [0xac,0x31,0x0e,0x8b]
1173b0846e8STim Northover; CHECK: add x12, x13, x14, lsr #42  ; encoding: [0xac,0xa9,0x4e,0x8b]
1183b0846e8STim Northover; CHECK: add x12, x13, x14, asr #39  ; encoding: [0xac,0x9d,0x8e,0x8b]
1193b0846e8STim Northover
1203b0846e8STim Northover  sub w12, w13, w14
1213b0846e8STim Northover  sub x12, x13, x14
1223b0846e8STim Northover  sub w12, w13, w14, lsl #12
1233b0846e8STim Northover  sub x12, x13, x14, lsl #12
1243b0846e8STim Northover  sub x12, x13, x14, lsr #42
1253b0846e8STim Northover  sub x12, x13, x14, asr #39
1263b0846e8STim Northover
1273b0846e8STim Northover; CHECK: sub w12, w13, w14           ; encoding: [0xac,0x01,0x0e,0x4b]
1283b0846e8STim Northover; CHECK: sub x12, x13, x14           ; encoding: [0xac,0x01,0x0e,0xcb]
1293b0846e8STim Northover; CHECK: sub w12, w13, w14, lsl #12  ; encoding: [0xac,0x31,0x0e,0x4b]
1303b0846e8STim Northover; CHECK: sub x12, x13, x14, lsl #12  ; encoding: [0xac,0x31,0x0e,0xcb]
1313b0846e8STim Northover; CHECK: sub x12, x13, x14, lsr #42  ; encoding: [0xac,0xa9,0x4e,0xcb]
1323b0846e8STim Northover; CHECK: sub x12, x13, x14, asr #39  ; encoding: [0xac,0x9d,0x8e,0xcb]
1333b0846e8STim Northover
1343b0846e8STim Northover  adds w12, w13, w14
1353b0846e8STim Northover  adds x12, x13, x14
1363b0846e8STim Northover  adds w12, w13, w14, lsl #12
1373b0846e8STim Northover  adds x12, x13, x14, lsl #12
1383b0846e8STim Northover  adds x12, x13, x14, lsr #42
1393b0846e8STim Northover  adds x12, x13, x14, asr #39
1403b0846e8STim Northover
1413b0846e8STim Northover; CHECK: adds w12, w13, w14          ; encoding: [0xac,0x01,0x0e,0x2b]
1423b0846e8STim Northover; CHECK: adds x12, x13, x14          ; encoding: [0xac,0x01,0x0e,0xab]
1433b0846e8STim Northover; CHECK: adds w12, w13, w14, lsl #12 ; encoding: [0xac,0x31,0x0e,0x2b]
1443b0846e8STim Northover; CHECK: adds x12, x13, x14, lsl #12 ; encoding: [0xac,0x31,0x0e,0xab]
1453b0846e8STim Northover; CHECK: adds x12, x13, x14, lsr #42 ; encoding: [0xac,0xa9,0x4e,0xab]
1463b0846e8STim Northover; CHECK: adds x12, x13, x14, asr #39 ; encoding: [0xac,0x9d,0x8e,0xab]
1473b0846e8STim Northover
1483b0846e8STim Northover  subs w12, w13, w14
1493b0846e8STim Northover  subs x12, x13, x14
1503b0846e8STim Northover  subs w12, w13, w14, lsl #12
1513b0846e8STim Northover  subs x12, x13, x14, lsl #12
1523b0846e8STim Northover  subs x12, x13, x14, lsr #42
1533b0846e8STim Northover  subs x12, x13, x14, asr #39
1543b0846e8STim Northover
1553b0846e8STim Northover; CHECK: subs w12, w13, w14          ; encoding: [0xac,0x01,0x0e,0x6b]
1563b0846e8STim Northover; CHECK: subs x12, x13, x14          ; encoding: [0xac,0x01,0x0e,0xeb]
1573b0846e8STim Northover; CHECK: subs w12, w13, w14, lsl #12 ; encoding: [0xac,0x31,0x0e,0x6b]
1583b0846e8STim Northover; CHECK: subs x12, x13, x14, lsl #12 ; encoding: [0xac,0x31,0x0e,0xeb]
1593b0846e8STim Northover; CHECK: subs x12, x13, x14, lsr #42 ; encoding: [0xac,0xa9,0x4e,0xeb]
1603b0846e8STim Northover; CHECK: subs x12, x13, x14, asr #39 ; encoding: [0xac,0x9d,0x8e,0xeb]
1613b0846e8STim Northover
1623b0846e8STim Northover; Check use of upper case register names rdar://14354073
1633b0846e8STim Northover  add X2, X2, X2
1643b0846e8STim Northover; CHECK: add x2, x2, x2              ; encoding: [0x42,0x00,0x02,0x8b]
1653b0846e8STim Northover
1663b0846e8STim Northover;==---------------------------------------------------------------------------==
1673b0846e8STim Northover; Add/Subtract with (optional) extend
1683b0846e8STim Northover;==---------------------------------------------------------------------------==
1693b0846e8STim Northover
1703b0846e8STim Northover  add w1, w2, w3, uxtb
1713b0846e8STim Northover  add w1, w2, w3, uxth
1723b0846e8STim Northover  add w1, w2, w3, uxtw
1733b0846e8STim Northover  add w1, w2, w3, uxtx
1743b0846e8STim Northover  add w1, w2, w3, sxtb
1753b0846e8STim Northover  add w1, w2, w3, sxth
1763b0846e8STim Northover  add w1, w2, w3, sxtw
1773b0846e8STim Northover  add w1, w2, w3, sxtx
1783b0846e8STim Northover
1793b0846e8STim Northover; CHECK: add w1, w2, w3, uxtb        ; encoding: [0x41,0x00,0x23,0x0b]
1803b0846e8STim Northover; CHECK: add w1, w2, w3, uxth        ; encoding: [0x41,0x20,0x23,0x0b]
1813b0846e8STim Northover; CHECK: add w1, w2, w3, uxtw        ; encoding: [0x41,0x40,0x23,0x0b]
1823b0846e8STim Northover; CHECK: add w1, w2, w3, uxtx        ; encoding: [0x41,0x60,0x23,0x0b]
1833b0846e8STim Northover; CHECK: add w1, w2, w3, sxtb        ; encoding: [0x41,0x80,0x23,0x0b]
1843b0846e8STim Northover; CHECK: add w1, w2, w3, sxth        ; encoding: [0x41,0xa0,0x23,0x0b]
1853b0846e8STim Northover; CHECK: add w1, w2, w3, sxtw        ; encoding: [0x41,0xc0,0x23,0x0b]
1863b0846e8STim Northover; CHECK: add w1, w2, w3, sxtx        ; encoding: [0x41,0xe0,0x23,0x0b]
1873b0846e8STim Northover
1883b0846e8STim Northover  add x1, x2, w3, uxtb
1893b0846e8STim Northover  add x1, x2, w3, uxth
1903b0846e8STim Northover  add x1, x2, w3, uxtw
1913b0846e8STim Northover  add x1, x2, w3, sxtb
1923b0846e8STim Northover  add x1, x2, w3, sxth
1933b0846e8STim Northover  add x1, x2, w3, sxtw
1943b0846e8STim Northover
1953b0846e8STim Northover; CHECK: add x1, x2, w3, uxtb        ; encoding: [0x41,0x00,0x23,0x8b]
1963b0846e8STim Northover; CHECK: add x1, x2, w3, uxth        ; encoding: [0x41,0x20,0x23,0x8b]
1973b0846e8STim Northover; CHECK: add x1, x2, w3, uxtw        ; encoding: [0x41,0x40,0x23,0x8b]
1983b0846e8STim Northover; CHECK: add x1, x2, w3, sxtb        ; encoding: [0x41,0x80,0x23,0x8b]
1993b0846e8STim Northover; CHECK: add x1, x2, w3, sxth        ; encoding: [0x41,0xa0,0x23,0x8b]
2003b0846e8STim Northover; CHECK: add x1, x2, w3, sxtw        ; encoding: [0x41,0xc0,0x23,0x8b]
2013b0846e8STim Northover
2023b0846e8STim Northover  add w1, wsp, w3
2033b0846e8STim Northover  add w1, wsp, w3, uxtw #0
2043b0846e8STim Northover  add w2, wsp, w3, lsl #1
2053b0846e8STim Northover  add sp, x2, x3
2063b0846e8STim Northover  add sp, x2, x3, uxtx #0
2073b0846e8STim Northover
2083b0846e8STim Northover; CHECK: add w1, wsp, w3             ; encoding: [0xe1,0x43,0x23,0x0b]
2093b0846e8STim Northover; CHECK: add w1, wsp, w3             ; encoding: [0xe1,0x43,0x23,0x0b]
2103b0846e8STim Northover; CHECK: add w2, wsp, w3, lsl #1     ; encoding: [0xe2,0x47,0x23,0x0b]
2113b0846e8STim Northover; CHECK: add sp, x2, x3              ; encoding: [0x5f,0x60,0x23,0x8b]
2123b0846e8STim Northover; CHECK: add sp, x2, x3              ; encoding: [0x5f,0x60,0x23,0x8b]
2133b0846e8STim Northover
2143b0846e8STim Northover  sub w1, w2, w3, uxtb
2153b0846e8STim Northover  sub w1, w2, w3, uxth
2163b0846e8STim Northover  sub w1, w2, w3, uxtw
2173b0846e8STim Northover  sub w1, w2, w3, uxtx
2183b0846e8STim Northover  sub w1, w2, w3, sxtb
2193b0846e8STim Northover  sub w1, w2, w3, sxth
2203b0846e8STim Northover  sub w1, w2, w3, sxtw
2213b0846e8STim Northover  sub w1, w2, w3, sxtx
2223b0846e8STim Northover
2233b0846e8STim Northover; CHECK: sub w1, w2, w3, uxtb        ; encoding: [0x41,0x00,0x23,0x4b]
2243b0846e8STim Northover; CHECK: sub w1, w2, w3, uxth        ; encoding: [0x41,0x20,0x23,0x4b]
2253b0846e8STim Northover; CHECK: sub w1, w2, w3, uxtw        ; encoding: [0x41,0x40,0x23,0x4b]
2263b0846e8STim Northover; CHECK: sub w1, w2, w3, uxtx        ; encoding: [0x41,0x60,0x23,0x4b]
2273b0846e8STim Northover; CHECK: sub w1, w2, w3, sxtb        ; encoding: [0x41,0x80,0x23,0x4b]
2283b0846e8STim Northover; CHECK: sub w1, w2, w3, sxth        ; encoding: [0x41,0xa0,0x23,0x4b]
2293b0846e8STim Northover; CHECK: sub w1, w2, w3, sxtw        ; encoding: [0x41,0xc0,0x23,0x4b]
2303b0846e8STim Northover; CHECK: sub w1, w2, w3, sxtx        ; encoding: [0x41,0xe0,0x23,0x4b]
2313b0846e8STim Northover
2323b0846e8STim Northover  sub x1, x2, w3, uxtb
2333b0846e8STim Northover  sub x1, x2, w3, uxth
2343b0846e8STim Northover  sub x1, x2, w3, uxtw
2353b0846e8STim Northover  sub x1, x2, w3, sxtb
2363b0846e8STim Northover  sub x1, x2, w3, sxth
2373b0846e8STim Northover  sub x1, x2, w3, sxtw
2383b0846e8STim Northover
2393b0846e8STim Northover; CHECK: sub x1, x2, w3, uxtb        ; encoding: [0x41,0x00,0x23,0xcb]
2403b0846e8STim Northover; CHECK: sub x1, x2, w3, uxth        ; encoding: [0x41,0x20,0x23,0xcb]
2413b0846e8STim Northover; CHECK: sub x1, x2, w3, uxtw        ; encoding: [0x41,0x40,0x23,0xcb]
2423b0846e8STim Northover; CHECK: sub x1, x2, w3, sxtb        ; encoding: [0x41,0x80,0x23,0xcb]
2433b0846e8STim Northover; CHECK: sub x1, x2, w3, sxth        ; encoding: [0x41,0xa0,0x23,0xcb]
2443b0846e8STim Northover; CHECK: sub x1, x2, w3, sxtw        ; encoding: [0x41,0xc0,0x23,0xcb]
2453b0846e8STim Northover
2463b0846e8STim Northover  sub w1, wsp, w3
2473b0846e8STim Northover  sub w1, wsp, w3, uxtw #0
2483b0846e8STim Northover  sub sp, x2, x3
2493b0846e8STim Northover  sub sp, x2, x3, uxtx #0
2503b0846e8STim Northover  sub sp, x3, x7, lsl #4
2513b0846e8STim Northover
2523b0846e8STim Northover; CHECK: sub w1, wsp, w3             ; encoding: [0xe1,0x43,0x23,0x4b]
2533b0846e8STim Northover; CHECK: sub w1, wsp, w3             ; encoding: [0xe1,0x43,0x23,0x4b]
2543b0846e8STim Northover; CHECK: sub sp, x2, x3              ; encoding: [0x5f,0x60,0x23,0xcb]
2553b0846e8STim Northover; CHECK: sub sp, x2, x3              ; encoding: [0x5f,0x60,0x23,0xcb]
2563b0846e8STim Northover; CHECK: sp, x3, x7, lsl #4          ; encoding: [0x7f,0x70,0x27,0xcb]
2573b0846e8STim Northover
2583b0846e8STim Northover  adds w1, w2, w3, uxtb
2593b0846e8STim Northover  adds w1, w2, w3, uxth
2603b0846e8STim Northover  adds w1, w2, w3, uxtw
2613b0846e8STim Northover  adds w1, w2, w3, uxtx
2623b0846e8STim Northover  adds w1, w2, w3, sxtb
2633b0846e8STim Northover  adds w1, w2, w3, sxth
2643b0846e8STim Northover  adds w1, w2, w3, sxtw
2653b0846e8STim Northover  adds w1, w2, w3, sxtx
2663b0846e8STim Northover
2673b0846e8STim Northover; CHECK: adds w1, w2, w3, uxtb       ; encoding: [0x41,0x00,0x23,0x2b]
2683b0846e8STim Northover; CHECK: adds w1, w2, w3, uxth       ; encoding: [0x41,0x20,0x23,0x2b]
2693b0846e8STim Northover; CHECK: adds w1, w2, w3, uxtw       ; encoding: [0x41,0x40,0x23,0x2b]
2703b0846e8STim Northover; CHECK: adds w1, w2, w3, uxtx       ; encoding: [0x41,0x60,0x23,0x2b]
2713b0846e8STim Northover; CHECK: adds w1, w2, w3, sxtb       ; encoding: [0x41,0x80,0x23,0x2b]
2723b0846e8STim Northover; CHECK: adds w1, w2, w3, sxth       ; encoding: [0x41,0xa0,0x23,0x2b]
2733b0846e8STim Northover; CHECK: adds w1, w2, w3, sxtw       ; encoding: [0x41,0xc0,0x23,0x2b]
2743b0846e8STim Northover; CHECK: adds w1, w2, w3, sxtx       ; encoding: [0x41,0xe0,0x23,0x2b]
2753b0846e8STim Northover
2763b0846e8STim Northover  adds x1, x2, w3, uxtb
2773b0846e8STim Northover  adds x1, x2, w3, uxth
2783b0846e8STim Northover  adds x1, x2, w3, uxtw
2793b0846e8STim Northover  adds x1, x2, w3, uxtx
2803b0846e8STim Northover  adds x1, x2, w3, sxtb
2813b0846e8STim Northover  adds x1, x2, w3, sxth
2823b0846e8STim Northover  adds x1, x2, w3, sxtw
2833b0846e8STim Northover  adds x1, x2, w3, sxtx
2843b0846e8STim Northover
2853b0846e8STim Northover; CHECK: adds x1, x2, w3, uxtb       ; encoding: [0x41,0x00,0x23,0xab]
2863b0846e8STim Northover; CHECK: adds x1, x2, w3, uxth       ; encoding: [0x41,0x20,0x23,0xab]
2873b0846e8STim Northover; CHECK: adds x1, x2, w3, uxtw       ; encoding: [0x41,0x40,0x23,0xab]
2883b0846e8STim Northover; CHECK: adds x1, x2, w3, uxtx       ; encoding: [0x41,0x60,0x23,0xab]
2893b0846e8STim Northover; CHECK: adds x1, x2, w3, sxtb       ; encoding: [0x41,0x80,0x23,0xab]
2903b0846e8STim Northover; CHECK: adds x1, x2, w3, sxth       ; encoding: [0x41,0xa0,0x23,0xab]
2913b0846e8STim Northover; CHECK: adds x1, x2, w3, sxtw       ; encoding: [0x41,0xc0,0x23,0xab]
2923b0846e8STim Northover; CHECK: adds x1, x2, w3, sxtx       ; encoding: [0x41,0xe0,0x23,0xab]
2933b0846e8STim Northover
2943b0846e8STim Northover  adds w1, wsp, w3
2953b0846e8STim Northover  adds w1, wsp, w3, uxtw #0
2963b0846e8STim Northover  adds wzr, wsp, w3, lsl #4
2973b0846e8STim Northover
2983b0846e8STim Northover; CHECK: adds w1, wsp, w3            ; encoding: [0xe1,0x43,0x23,0x2b]
2993b0846e8STim Northover; CHECK: adds w1, wsp, w3            ; encoding: [0xe1,0x43,0x23,0x2b]
3003b0846e8STim Northover; CHECK: cmn wsp, w3, lsl #4         ; encoding: [0xff,0x53,0x23,0x2b]
3013b0846e8STim Northover
3023b0846e8STim Northover  subs w1, w2, w3, uxtb
3033b0846e8STim Northover  subs w1, w2, w3, uxth
3043b0846e8STim Northover  subs w1, w2, w3, uxtw
3053b0846e8STim Northover  subs w1, w2, w3, uxtx
3063b0846e8STim Northover  subs w1, w2, w3, sxtb
3073b0846e8STim Northover  subs w1, w2, w3, sxth
3083b0846e8STim Northover  subs w1, w2, w3, sxtw
3093b0846e8STim Northover  subs w1, w2, w3, sxtx
3103b0846e8STim Northover
3113b0846e8STim Northover; CHECK: subs w1, w2, w3, uxtb       ; encoding: [0x41,0x00,0x23,0x6b]
3123b0846e8STim Northover; CHECK: subs w1, w2, w3, uxth       ; encoding: [0x41,0x20,0x23,0x6b]
3133b0846e8STim Northover; CHECK: subs w1, w2, w3, uxtw       ; encoding: [0x41,0x40,0x23,0x6b]
3143b0846e8STim Northover; CHECK: subs w1, w2, w3, uxtx       ; encoding: [0x41,0x60,0x23,0x6b]
3153b0846e8STim Northover; CHECK: subs w1, w2, w3, sxtb       ; encoding: [0x41,0x80,0x23,0x6b]
3163b0846e8STim Northover; CHECK: subs w1, w2, w3, sxth       ; encoding: [0x41,0xa0,0x23,0x6b]
3173b0846e8STim Northover; CHECK: subs w1, w2, w3, sxtw       ; encoding: [0x41,0xc0,0x23,0x6b]
3183b0846e8STim Northover; CHECK: subs w1, w2, w3, sxtx       ; encoding: [0x41,0xe0,0x23,0x6b]
3193b0846e8STim Northover
3203b0846e8STim Northover  subs x1, x2, w3, uxtb
3213b0846e8STim Northover  subs x1, x2, w3, uxth
3223b0846e8STim Northover  subs x1, x2, w3, uxtw
3233b0846e8STim Northover  subs x1, x2, w3, uxtx
3243b0846e8STim Northover  subs x1, x2, w3, sxtb
3253b0846e8STim Northover  subs x1, x2, w3, sxth
3263b0846e8STim Northover  subs x1, x2, w3, sxtw
3273b0846e8STim Northover  subs x1, x2, w3, sxtx
3283b0846e8STim Northover
3293b0846e8STim Northover; CHECK: subs x1, x2, w3, uxtb       ; encoding: [0x41,0x00,0x23,0xeb]
3303b0846e8STim Northover; CHECK: subs x1, x2, w3, uxth       ; encoding: [0x41,0x20,0x23,0xeb]
3313b0846e8STim Northover; CHECK: subs x1, x2, w3, uxtw       ; encoding: [0x41,0x40,0x23,0xeb]
3323b0846e8STim Northover; CHECK: subs x1, x2, w3, uxtx       ; encoding: [0x41,0x60,0x23,0xeb]
3333b0846e8STim Northover; CHECK: subs x1, x2, w3, sxtb       ; encoding: [0x41,0x80,0x23,0xeb]
3343b0846e8STim Northover; CHECK: subs x1, x2, w3, sxth       ; encoding: [0x41,0xa0,0x23,0xeb]
3353b0846e8STim Northover; CHECK: subs x1, x2, w3, sxtw       ; encoding: [0x41,0xc0,0x23,0xeb]
3363b0846e8STim Northover; CHECK: subs x1, x2, w3, sxtx       ; encoding: [0x41,0xe0,0x23,0xeb]
3373b0846e8STim Northover
3383b0846e8STim Northover  subs w1, wsp, w3
3393b0846e8STim Northover  subs w1, wsp, w3, uxtw #0
3403b0846e8STim Northover
3413b0846e8STim Northover; CHECK: subs w1, wsp, w3            ; encoding: [0xe1,0x43,0x23,0x6b]
3423b0846e8STim Northover; CHECK: subs w1, wsp, w3            ; encoding: [0xe1,0x43,0x23,0x6b]
3433b0846e8STim Northover
3443b0846e8STim Northover  cmp wsp, w9, lsl #0
3453b0846e8STim Northover  subs x3, sp, x9, lsl #2
3463b0846e8STim Northover  cmp wsp, w8, uxtw
3473b0846e8STim Northover  subs wzr, wsp, w8, uxtw
3483b0846e8STim Northover  cmp sp, w8, uxtw
3493b0846e8STim Northover  subs xzr, sp, w8, uxtw
3503b0846e8STim Northover
3513b0846e8STim Northover; CHECK: cmp wsp, w9                 ; encoding: [0xff,0x43,0x29,0x6b]
3523b0846e8STim Northover; CHECK: subs x3, sp, x9, lsl #2     ; encoding: [0xe3,0x6b,0x29,0xeb]
3533b0846e8STim Northover; CHECK: cmp wsp, w8                 ; encoding: [0xff,0x43,0x28,0x6b]
3543b0846e8STim Northover; CHECK: cmp wsp, w8                 ; encoding: [0xff,0x43,0x28,0x6b]
3553b0846e8STim Northover; CHECK: cmp sp, w8, uxtw            ; encoding: [0xff,0x43,0x28,0xeb]
3563b0846e8STim Northover; CHECK: cmp sp, w8, uxtw            ; encoding: [0xff,0x43,0x28,0xeb]
3573b0846e8STim Northover
3583b0846e8STim Northover  sub wsp, w9, w8, uxtw
3593b0846e8STim Northover  sub w1, wsp, w8, uxtw
3603b0846e8STim Northover  sub wsp, wsp, w8, uxtw
3613b0846e8STim Northover  sub sp, x9, w8, uxtw
3623b0846e8STim Northover  sub x1, sp, w8, uxtw
3633b0846e8STim Northover  sub sp, sp, w8, uxtw
3643b0846e8STim Northover  subs w1, wsp, w8, uxtw
3653b0846e8STim Northover  subs x1, sp, w8, uxtw
3663b0846e8STim Northover
3673b0846e8STim Northover; CHECK: sub wsp, w9, w8             ; encoding: [0x3f,0x41,0x28,0x4b]
3683b0846e8STim Northover; CHECK: sub w1, wsp, w8             ; encoding: [0xe1,0x43,0x28,0x4b]
3693b0846e8STim Northover; CHECK: sub wsp, wsp, w8            ; encoding: [0xff,0x43,0x28,0x4b]
3703b0846e8STim Northover; CHECK: sub sp, x9, w8, uxtw        ; encoding: [0x3f,0x41,0x28,0xcb]
3713b0846e8STim Northover; CHECK: sub x1, sp, w8, uxtw        ; encoding: [0xe1,0x43,0x28,0xcb]
3723b0846e8STim Northover; CHECK: sub sp, sp, w8, uxtw        ; encoding: [0xff,0x43,0x28,0xcb]
3733b0846e8STim Northover; CHECK: subs w1, wsp, w8            ; encoding: [0xe1,0x43,0x28,0x6b]
3743b0846e8STim Northover; CHECK: subs x1, sp, w8, uxtw       ; encoding: [0xe1,0x43,0x28,0xeb]
3753b0846e8STim Northover
3763b0846e8STim Northover;==---------------------------------------------------------------------------==
3773b0846e8STim Northover; Signed/Unsigned divide
3783b0846e8STim Northover;==---------------------------------------------------------------------------==
3793b0846e8STim Northover
3803b0846e8STim Northover  sdiv w1, w2, w3
3813b0846e8STim Northover  sdiv x1, x2, x3
3823b0846e8STim Northover  udiv w1, w2, w3
3833b0846e8STim Northover  udiv x1, x2, x3
3843b0846e8STim Northover
3853b0846e8STim Northover; CHECK: sdiv w1, w2, w3             ; encoding: [0x41,0x0c,0xc3,0x1a]
3863b0846e8STim Northover; CHECK: sdiv x1, x2, x3             ; encoding: [0x41,0x0c,0xc3,0x9a]
3873b0846e8STim Northover; CHECK: udiv w1, w2, w3             ; encoding: [0x41,0x08,0xc3,0x1a]
3883b0846e8STim Northover; CHECK: udiv x1, x2, x3             ; encoding: [0x41,0x08,0xc3,0x9a]
3893b0846e8STim Northover
3903b0846e8STim Northover;==---------------------------------------------------------------------------==
3913b0846e8STim Northover; Variable shifts
3923b0846e8STim Northover;==---------------------------------------------------------------------------==
3933b0846e8STim Northover
3943b0846e8STim Northover  asrv w1, w2, w3
3953b0846e8STim Northover  asrv x1, x2, x3
3963b0846e8STim Northover  asr w1, w2, w3
3973b0846e8STim Northover  asr x1, x2, x3
3983b0846e8STim Northover  lslv w1, w2, w3
3993b0846e8STim Northover  lslv x1, x2, x3
4003b0846e8STim Northover  lsl w1, w2, w3
4013b0846e8STim Northover  lsl x1, x2, x3
4023b0846e8STim Northover  lsrv w1, w2, w3
4033b0846e8STim Northover  lsrv x1, x2, x3
4043b0846e8STim Northover  lsr w1, w2, w3
4053b0846e8STim Northover  lsr x1, x2, x3
4063b0846e8STim Northover  rorv w1, w2, w3
4073b0846e8STim Northover  rorv x1, x2, x3
4083b0846e8STim Northover  ror w1, w2, w3
4093b0846e8STim Northover  ror x1, x2, x3
4103b0846e8STim Northover
4113b0846e8STim Northover; CHECK: encoding: [0x41,0x28,0xc3,0x1a]
4123b0846e8STim Northover; CHECK: encoding: [0x41,0x28,0xc3,0x9a]
4133b0846e8STim Northover; CHECK: encoding: [0x41,0x28,0xc3,0x1a]
4143b0846e8STim Northover; CHECK: encoding: [0x41,0x28,0xc3,0x9a]
4153b0846e8STim Northover; CHECK: encoding: [0x41,0x20,0xc3,0x1a]
4163b0846e8STim Northover; CHECK: encoding: [0x41,0x20,0xc3,0x9a]
4173b0846e8STim Northover; CHECK: encoding: [0x41,0x20,0xc3,0x1a]
4183b0846e8STim Northover; CHECK: encoding: [0x41,0x20,0xc3,0x9a]
4193b0846e8STim Northover; CHECK: encoding: [0x41,0x24,0xc3,0x1a]
4203b0846e8STim Northover; CHECK: encoding: [0x41,0x24,0xc3,0x9a]
4213b0846e8STim Northover; CHECK: encoding: [0x41,0x24,0xc3,0x1a]
4223b0846e8STim Northover; CHECK: encoding: [0x41,0x24,0xc3,0x9a]
4233b0846e8STim Northover; CHECK: encoding: [0x41,0x2c,0xc3,0x1a]
4243b0846e8STim Northover; CHECK: encoding: [0x41,0x2c,0xc3,0x9a]
4253b0846e8STim Northover; CHECK: encoding: [0x41,0x2c,0xc3,0x1a]
4263b0846e8STim Northover; CHECK: encoding: [0x41,0x2c,0xc3,0x9a]
4273b0846e8STim Northover
4283b0846e8STim Northover;==---------------------------------------------------------------------------==
4293b0846e8STim Northover; One operand instructions
4303b0846e8STim Northover;==---------------------------------------------------------------------------==
4313b0846e8STim Northover
4323b0846e8STim Northover  cls w1, w2
4333b0846e8STim Northover  cls x1, x2
4343b0846e8STim Northover  clz w1, w2
4353b0846e8STim Northover  clz x1, x2
4363b0846e8STim Northover  rbit w1, w2
4373b0846e8STim Northover  rbit x1, x2
4383b0846e8STim Northover  rev w1, w2
4393b0846e8STim Northover  rev x1, x2
4403b0846e8STim Northover  rev16 w1, w2
4413b0846e8STim Northover  rev16 x1, x2
4423b0846e8STim Northover  rev32 x1, x2
4433b0846e8STim Northover
4443b0846e8STim Northover; CHECK: encoding: [0x41,0x14,0xc0,0x5a]
4453b0846e8STim Northover; CHECK: encoding: [0x41,0x14,0xc0,0xda]
4463b0846e8STim Northover; CHECK: encoding: [0x41,0x10,0xc0,0x5a]
4473b0846e8STim Northover; CHECK: encoding: [0x41,0x10,0xc0,0xda]
4483b0846e8STim Northover; CHECK: encoding: [0x41,0x00,0xc0,0x5a]
4493b0846e8STim Northover; CHECK: encoding: [0x41,0x00,0xc0,0xda]
4503b0846e8STim Northover; CHECK: encoding: [0x41,0x08,0xc0,0x5a]
4513b0846e8STim Northover; CHECK: encoding: [0x41,0x0c,0xc0,0xda]
4523b0846e8STim Northover; CHECK: encoding: [0x41,0x04,0xc0,0x5a]
4533b0846e8STim Northover; CHECK: encoding: [0x41,0x04,0xc0,0xda]
4543b0846e8STim Northover; CHECK: encoding: [0x41,0x08,0xc0,0xda]
4553b0846e8STim Northover
4563b0846e8STim Northover;==---------------------------------------------------------------------------==
4573b0846e8STim Northover; 6.6.1 Multiply-add instructions
4583b0846e8STim Northover;==---------------------------------------------------------------------------==
4593b0846e8STim Northover
4603b0846e8STim Northover  madd   w1, w2, w3, w4
4613b0846e8STim Northover  madd   x1, x2, x3, x4
4623b0846e8STim Northover  msub   w1, w2, w3, w4
4633b0846e8STim Northover  msub   x1, x2, x3, x4
4643b0846e8STim Northover  smaddl x1, w2, w3, x4
4653b0846e8STim Northover  smsubl x1, w2, w3, x4
4663b0846e8STim Northover  umaddl x1, w2, w3, x4
4673b0846e8STim Northover  umsubl x1, w2, w3, x4
4683b0846e8STim Northover
4693b0846e8STim Northover; CHECK: madd   w1, w2, w3, w4       ; encoding: [0x41,0x10,0x03,0x1b]
4703b0846e8STim Northover; CHECK: madd   x1, x2, x3, x4       ; encoding: [0x41,0x10,0x03,0x9b]
4713b0846e8STim Northover; CHECK: msub   w1, w2, w3, w4       ; encoding: [0x41,0x90,0x03,0x1b]
4723b0846e8STim Northover; CHECK: msub   x1, x2, x3, x4       ; encoding: [0x41,0x90,0x03,0x9b]
4733b0846e8STim Northover; CHECK: smaddl x1, w2, w3, x4       ; encoding: [0x41,0x10,0x23,0x9b]
4743b0846e8STim Northover; CHECK: smsubl x1, w2, w3, x4       ; encoding: [0x41,0x90,0x23,0x9b]
4753b0846e8STim Northover; CHECK: umaddl x1, w2, w3, x4       ; encoding: [0x41,0x10,0xa3,0x9b]
4763b0846e8STim Northover; CHECK: umsubl x1, w2, w3, x4       ; encoding: [0x41,0x90,0xa3,0x9b]
4773b0846e8STim Northover
4783b0846e8STim Northover;==---------------------------------------------------------------------------==
4793b0846e8STim Northover; Multiply-high instructions
4803b0846e8STim Northover;==---------------------------------------------------------------------------==
4813b0846e8STim Northover
4823b0846e8STim Northover  smulh x1, x2, x3
4833b0846e8STim Northover  umulh x1, x2, x3
4843b0846e8STim Northover
4853b0846e8STim Northover; CHECK: smulh x1, x2, x3            ; encoding: [0x41,0x7c,0x43,0x9b]
4863b0846e8STim Northover; CHECK: umulh x1, x2, x3            ; encoding: [0x41,0x7c,0xc3,0x9b]
4873b0846e8STim Northover
4883b0846e8STim Northover;==---------------------------------------------------------------------------==
4893b0846e8STim Northover; Move immediate instructions
4903b0846e8STim Northover;==---------------------------------------------------------------------------==
4913b0846e8STim Northover
4923b0846e8STim Northover  movz w0, #1
4933b0846e8STim Northover  movz x0, #1
4943b0846e8STim Northover  movz w0, #1, lsl #16
4953b0846e8STim Northover  movz x0, #1, lsl #16
4963b0846e8STim Northover
497*daa1c018STim Northover; CHECK: mov w0, #1                 ; encoding: [0x20,0x00,0x80,0x52]
498*daa1c018STim Northover; CHECK: mov x0, #1                 ; encoding: [0x20,0x00,0x80,0xd2]
499*daa1c018STim Northover; CHECK: mov w0, #65536             ; encoding: [0x20,0x00,0xa0,0x52]
500*daa1c018STim Northover; CHECK: mov x0, #65536             ; encoding: [0x20,0x00,0xa0,0xd2]
5013b0846e8STim Northover
5023b0846e8STim Northover  movn w0, #2
5033b0846e8STim Northover  movn x0, #2
5043b0846e8STim Northover  movn w0, #2, lsl #16
5053b0846e8STim Northover  movn x0, #2, lsl #16
5063b0846e8STim Northover
507*daa1c018STim Northover; CHECK: mov w0, #-3                 ; encoding: [0x40,0x00,0x80,0x12]
508*daa1c018STim Northover; CHECK: mov x0, #-3                 ; encoding: [0x40,0x00,0x80,0x92]
509*daa1c018STim Northover; CHECK: mov w0, #-131073            ; encoding: [0x40,0x00,0xa0,0x12]
510*daa1c018STim Northover; CHECK: mov x0, #-131073            ; encoding: [0x40,0x00,0xa0,0x92]
5113b0846e8STim Northover
5123b0846e8STim Northover  movk w0, #1
5133b0846e8STim Northover  movk x0, #1
5143b0846e8STim Northover  movk w0, #1, lsl #16
5153b0846e8STim Northover  movk x0, #1, lsl #16
5163b0846e8STim Northover
5174f5b3be7SPaul Osmialowski; CHECK: movk w0, #1                 ; encoding: [0x20,0x00,0x80,0x72]
5184f5b3be7SPaul Osmialowski; CHECK: movk x0, #1                 ; encoding: [0x20,0x00,0x80,0xf2]
5194f5b3be7SPaul Osmialowski; CHECK: movk w0, #1, lsl #16        ; encoding: [0x20,0x00,0xa0,0x72]
5204f5b3be7SPaul Osmialowski; CHECK: movk x0, #1, lsl #16        ; encoding: [0x20,0x00,0xa0,0xf2]
5213b0846e8STim Northover
5223b0846e8STim Northover;==---------------------------------------------------------------------------==
5233b0846e8STim Northover; Conditionally set flags instructions
5243b0846e8STim Northover;==---------------------------------------------------------------------------==
5253b0846e8STim Northover
5263b0846e8STim Northover  ccmn w1, #2, #3, eq
5273b0846e8STim Northover  ccmn x1, #2, #3, eq
5283b0846e8STim Northover  ccmp w1, #2, #3, eq
5293b0846e8STim Northover  ccmp x1, #2, #3, eq
5303b0846e8STim Northover
5313b0846e8STim Northover; CHECK: encoding: [0x23,0x08,0x42,0x3a]
5323b0846e8STim Northover; CHECK: encoding: [0x23,0x08,0x42,0xba]
5333b0846e8STim Northover; CHECK: encoding: [0x23,0x08,0x42,0x7a]
5343b0846e8STim Northover; CHECK: encoding: [0x23,0x08,0x42,0xfa]
5353b0846e8STim Northover
5363b0846e8STim Northover  ccmn w1, w2, #3, eq
5373b0846e8STim Northover  ccmn x1, x2, #3, eq
5383b0846e8STim Northover  ccmp w1, w2, #3, eq
5393b0846e8STim Northover  ccmp x1, x2, #3, eq
5403b0846e8STim Northover
5413b0846e8STim Northover; CHECK: encoding: [0x23,0x00,0x42,0x3a]
5423b0846e8STim Northover; CHECK: encoding: [0x23,0x00,0x42,0xba]
5433b0846e8STim Northover; CHECK: encoding: [0x23,0x00,0x42,0x7a]
5443b0846e8STim Northover; CHECK: encoding: [0x23,0x00,0x42,0xfa]
5453b0846e8STim Northover
5463b0846e8STim Northover;==---------------------------------------------------------------------------==
5473b0846e8STim Northover; Conditional select instructions
5483b0846e8STim Northover;==---------------------------------------------------------------------------==
5493b0846e8STim Northover
5503b0846e8STim Northover  csel w1, w2, w3, eq
5513b0846e8STim Northover  csel x1, x2, x3, eq
5523b0846e8STim Northover  csinc w1, w2, w3, eq
5533b0846e8STim Northover  csinc x1, x2, x3, eq
5543b0846e8STim Northover  csinv w1, w2, w3, eq
5553b0846e8STim Northover  csinv x1, x2, x3, eq
5563b0846e8STim Northover  csneg w1, w2, w3, eq
5573b0846e8STim Northover  csneg x1, x2, x3, eq
5583b0846e8STim Northover
5593b0846e8STim Northover; CHECK: encoding: [0x41,0x00,0x83,0x1a]
5603b0846e8STim Northover; CHECK: encoding: [0x41,0x00,0x83,0x9a]
5613b0846e8STim Northover; CHECK: encoding: [0x41,0x04,0x83,0x1a]
5623b0846e8STim Northover; CHECK: encoding: [0x41,0x04,0x83,0x9a]
5633b0846e8STim Northover; CHECK: encoding: [0x41,0x00,0x83,0x5a]
5643b0846e8STim Northover; CHECK: encoding: [0x41,0x00,0x83,0xda]
5653b0846e8STim Northover; CHECK: encoding: [0x41,0x04,0x83,0x5a]
5663b0846e8STim Northover; CHECK: encoding: [0x41,0x04,0x83,0xda]
5673b0846e8STim Northover
5683b0846e8STim Northover; Make sure we handle upper case, too. In particular, condition codes.
5693b0846e8STim Northover  CSEL W16, W7, W27, EQ
5703b0846e8STim Northover  CSEL W15, W6, W26, NE
5713b0846e8STim Northover  CSEL W14, W5, W25, CS
5723b0846e8STim Northover  CSEL W13, W4, W24, HS
5733b0846e8STim Northover  csel w12, w3, w23, CC
5743b0846e8STim Northover  csel w11, w2, w22, LO
5753b0846e8STim Northover  csel w10, w1, w21, MI
5763b0846e8STim Northover  csel x9, x9, x1, PL
5773b0846e8STim Northover  csel x8, x8, x2, VS
5783b0846e8STim Northover  CSEL X7, X7, X3, VC
5793b0846e8STim Northover  CSEL X6, X7, X4, HI
5803b0846e8STim Northover  CSEL X5, X6, X5, LS
5813b0846e8STim Northover  CSEL X4, X5, X6, GE
5823b0846e8STim Northover  csel x3, x4, x7, LT
5833b0846e8STim Northover  csel x2, x3, x8, GT
5843b0846e8STim Northover  csel x1, x2, x9, LE
5853b0846e8STim Northover  csel x10, x1, x20, AL
5863b0846e8STim Northover
5873b0846e8STim Northover; CHECK: csel	w16, w7, w27, eq        ; encoding: [0xf0,0x00,0x9b,0x1a]
5883b0846e8STim Northover; CHECK: csel	w15, w6, w26, ne        ; encoding: [0xcf,0x10,0x9a,0x1a]
5893b0846e8STim Northover; CHECK: csel	w14, w5, w25, hs        ; encoding: [0xae,0x20,0x99,0x1a]
5903b0846e8STim Northover; CHECK: csel	w13, w4, w24, hs        ; encoding: [0x8d,0x20,0x98,0x1a]
5913b0846e8STim Northover; CHECK: csel	w12, w3, w23, lo        ; encoding: [0x6c,0x30,0x97,0x1a]
5923b0846e8STim Northover; CHECK: csel	w11, w2, w22, lo        ; encoding: [0x4b,0x30,0x96,0x1a]
5933b0846e8STim Northover; CHECK: csel	w10, w1, w21, mi        ; encoding: [0x2a,0x40,0x95,0x1a]
5943b0846e8STim Northover; CHECK: csel	x9, x9, x1, pl          ; encoding: [0x29,0x51,0x81,0x9a]
5953b0846e8STim Northover; CHECK: csel	x8, x8, x2, vs          ; encoding: [0x08,0x61,0x82,0x9a]
5963b0846e8STim Northover; CHECK: csel	x7, x7, x3, vc          ; encoding: [0xe7,0x70,0x83,0x9a]
5973b0846e8STim Northover; CHECK: csel	x6, x7, x4, hi          ; encoding: [0xe6,0x80,0x84,0x9a]
5983b0846e8STim Northover; CHECK: csel	x5, x6, x5, ls          ; encoding: [0xc5,0x90,0x85,0x9a]
5993b0846e8STim Northover; CHECK: csel	x4, x5, x6, ge          ; encoding: [0xa4,0xa0,0x86,0x9a]
6003b0846e8STim Northover; CHECK: csel	x3, x4, x7, lt          ; encoding: [0x83,0xb0,0x87,0x9a]
6013b0846e8STim Northover; CHECK: csel	x2, x3, x8, gt          ; encoding: [0x62,0xc0,0x88,0x9a]
6023b0846e8STim Northover; CHECK: csel	x1, x2, x9, le          ; encoding: [0x41,0xd0,0x89,0x9a]
6033b0846e8STim Northover; CHECK: csel	x10, x1, x20, al        ; encoding: [0x2a,0xe0,0x94,0x9a]
6043b0846e8STim Northover
6053b0846e8STim Northover
6063b0846e8STim Northover;==---------------------------------------------------------------------------==
6073b0846e8STim Northover; Scalar saturating arithmetic
6083b0846e8STim Northover;==---------------------------------------------------------------------------==
6093b0846e8STim Northover  uqxtn b4, h2
6103b0846e8STim Northover  uqxtn h2, s3
6113b0846e8STim Northover  uqxtn s9, d2
6123b0846e8STim Northover
6133b0846e8STim Northover; CHECK: uqxtn b4, h2                  ; encoding: [0x44,0x48,0x21,0x7e]
6143b0846e8STim Northover; CHECK: uqxtn h2, s3                  ; encoding: [0x62,0x48,0x61,0x7e]
6153b0846e8STim Northover; CHECK: uqxtn s9, d2                  ; encoding: [0x49,0x48,0xa1,0x7e]
616