brintos

brintos / llvm-project-archived public Read only

0
0
Text · 23.5 KiB · 7b09069 Raw
616 lines · plain
1; RUN: llvm-mc -triple arm64-apple-darwin -mattr=neon -show-encoding < %s | FileCheck %s2 3foo:4;==---------------------------------------------------------------------------==5; Add/Subtract with carry/borrow6;==---------------------------------------------------------------------------==7 8  adc   w1, w2, w39  adc   x1, x2, x310  adcs  w5, w4, w311  adcs  x5, x4, x312 13; CHECK: adc  w1, w2, w3             ; encoding: [0x41,0x00,0x03,0x1a]14; CHECK: adc  x1, x2, x3             ; encoding: [0x41,0x00,0x03,0x9a]15; CHECK: adcs w5, w4, w3             ; encoding: [0x85,0x00,0x03,0x3a]16; CHECK: adcs x5, x4, x3             ; encoding: [0x85,0x00,0x03,0xba]17 18  sbc   w1, w2, w319  sbc   x1, x2, x320  sbcs  w1, w2, w321  sbcs  x1, x2, x322 23; CHECK: sbc  w1, w2, w3             ; encoding: [0x41,0x00,0x03,0x5a]24; CHECK: sbc  x1, x2, x3             ; encoding: [0x41,0x00,0x03,0xda]25; CHECK: sbcs w1, w2, w3             ; encoding: [0x41,0x00,0x03,0x7a]26; CHECK: sbcs x1, x2, x3             ; encoding: [0x41,0x00,0x03,0xfa]27 28;==---------------------------------------------------------------------------==29; Add/Subtract with (optionally shifted) immediate30;==---------------------------------------------------------------------------==31 32  add w3, w4, #102433  add w3, w4, #1024, lsl #034  add x3, x4, #102435  add x3, x4, #1024, lsl #036 37; CHECK: add w3, w4, #1024           ; encoding: [0x83,0x00,0x10,0x11]38; CHECK: add w3, w4, #1024           ; encoding: [0x83,0x00,0x10,0x11]39; CHECK: add x3, x4, #1024           ; encoding: [0x83,0x00,0x10,0x91]40; CHECK: add x3, x4, #1024           ; encoding: [0x83,0x00,0x10,0x91]41 42  add w3, w4, #1024, lsl #1243  add w3, w4, #419430444  add w3, w4, #0, lsl #1245  add x3, x4, #1024, lsl #1246  add x3, x4, #419430447  add x3, x4, #0, lsl #1248  add sp, sp, #3249 50; CHECK: add w3, w4, #1024, lsl #12  ; encoding: [0x83,0x00,0x50,0x11]51; CHECK: add w3, w4, #1024, lsl #12  ; encoding: [0x83,0x00,0x50,0x11]52; CHECK: add w3, w4, #0, lsl #12     ; encoding: [0x83,0x00,0x40,0x11]53; CHECK: add x3, x4, #1024, lsl #12  ; encoding: [0x83,0x00,0x50,0x91]54; CHECK: add x3, x4, #1024, lsl #12  ; encoding: [0x83,0x00,0x50,0x91]55; CHECK: add x3, x4, #0, lsl #12     ; encoding: [0x83,0x00,0x40,0x91]56; CHECK: add sp, sp, #32             ; encoding: [0xff,0x83,0x00,0x91]57 58  adds w3, w4, #102459  adds w3, w4, #1024, lsl #060  adds w3, w4, #1024, lsl #1261  adds x3, x4, #102462  adds x3, x4, #1024, lsl #063  adds x3, x4, #1024, lsl #1264 65; CHECK: adds w3, w4, #1024          ; encoding: [0x83,0x00,0x10,0x31]66; CHECK: adds w3, w4, #1024          ; encoding: [0x83,0x00,0x10,0x31]67; CHECK: adds w3, w4, #1024, lsl #12 ; encoding: [0x83,0x00,0x50,0x31]68; CHECK: adds x3, x4, #1024          ; encoding: [0x83,0x00,0x10,0xb1]69; CHECK: adds x3, x4, #1024          ; encoding: [0x83,0x00,0x10,0xb1]70; CHECK: adds x3, x4, #1024, lsl #12 ; encoding: [0x83,0x00,0x50,0xb1]71 72  sub w3, w4, #102473  sub w3, w4, #1024, lsl #074  sub w3, w4, #1024, lsl #1275  sub x3, x4, #102476  sub x3, x4, #1024, lsl #077  sub x3, x4, #1024, lsl #1278  sub sp, sp, #3279 80; CHECK: sub w3, w4, #1024           ; encoding: [0x83,0x00,0x10,0x51]81; CHECK: sub w3, w4, #1024           ; encoding: [0x83,0x00,0x10,0x51]82; CHECK: sub w3, w4, #1024, lsl #12  ; encoding: [0x83,0x00,0x50,0x51]83; CHECK: sub x3, x4, #1024           ; encoding: [0x83,0x00,0x10,0xd1]84; CHECK: sub x3, x4, #1024           ; encoding: [0x83,0x00,0x10,0xd1]85; CHECK: sub x3, x4, #1024, lsl #12  ; encoding: [0x83,0x00,0x50,0xd1]86; CHECK: sub sp, sp, #32             ; encoding: [0xff,0x83,0x00,0xd1]87 88  subs w3, w4, #102489  subs w3, w4, #1024, lsl #090  subs w3, w4, #1024, lsl #1291  subs x3, x4, #102492  subs x3, x4, #1024, lsl #093  subs x3, x4, #1024, lsl #1294 95; CHECK: subs w3, w4, #1024          ; encoding: [0x83,0x00,0x10,0x71]96; CHECK: subs w3, w4, #1024          ; encoding: [0x83,0x00,0x10,0x71]97; CHECK: subs w3, w4, #1024, lsl #12 ; encoding: [0x83,0x00,0x50,0x71]98; CHECK: subs x3, x4, #1024          ; encoding: [0x83,0x00,0x10,0xf1]99; CHECK: subs x3, x4, #1024          ; encoding: [0x83,0x00,0x10,0xf1]100; CHECK: subs x3, x4, #1024, lsl #12 ; encoding: [0x83,0x00,0x50,0xf1]101 102;==---------------------------------------------------------------------------==103; Add/Subtract register with (optional) shift104;==---------------------------------------------------------------------------==105 106  add w12, w13, w14107  add x12, x13, x14108  add w12, w13, w14, lsl #12109  add x12, x13, x14, lsl #12110  add x12, x13, x14, lsr #42111  add x12, x13, x14, asr #39112 113; CHECK: add w12, w13, w14           ; encoding: [0xac,0x01,0x0e,0x0b]114; CHECK: add x12, x13, x14           ; encoding: [0xac,0x01,0x0e,0x8b]115; CHECK: add w12, w13, w14, lsl #12  ; encoding: [0xac,0x31,0x0e,0x0b]116; CHECK: add x12, x13, x14, lsl #12  ; encoding: [0xac,0x31,0x0e,0x8b]117; CHECK: add x12, x13, x14, lsr #42  ; encoding: [0xac,0xa9,0x4e,0x8b]118; CHECK: add x12, x13, x14, asr #39  ; encoding: [0xac,0x9d,0x8e,0x8b]119 120  sub w12, w13, w14121  sub x12, x13, x14122  sub w12, w13, w14, lsl #12123  sub x12, x13, x14, lsl #12124  sub x12, x13, x14, lsr #42125  sub x12, x13, x14, asr #39126 127; CHECK: sub w12, w13, w14           ; encoding: [0xac,0x01,0x0e,0x4b]128; CHECK: sub x12, x13, x14           ; encoding: [0xac,0x01,0x0e,0xcb]129; CHECK: sub w12, w13, w14, lsl #12  ; encoding: [0xac,0x31,0x0e,0x4b]130; CHECK: sub x12, x13, x14, lsl #12  ; encoding: [0xac,0x31,0x0e,0xcb]131; CHECK: sub x12, x13, x14, lsr #42  ; encoding: [0xac,0xa9,0x4e,0xcb]132; CHECK: sub x12, x13, x14, asr #39  ; encoding: [0xac,0x9d,0x8e,0xcb]133 134  adds w12, w13, w14135  adds x12, x13, x14136  adds w12, w13, w14, lsl #12137  adds x12, x13, x14, lsl #12138  adds x12, x13, x14, lsr #42139  adds x12, x13, x14, asr #39140 141; CHECK: adds w12, w13, w14          ; encoding: [0xac,0x01,0x0e,0x2b]142; CHECK: adds x12, x13, x14          ; encoding: [0xac,0x01,0x0e,0xab]143; CHECK: adds w12, w13, w14, lsl #12 ; encoding: [0xac,0x31,0x0e,0x2b]144; CHECK: adds x12, x13, x14, lsl #12 ; encoding: [0xac,0x31,0x0e,0xab]145; CHECK: adds x12, x13, x14, lsr #42 ; encoding: [0xac,0xa9,0x4e,0xab]146; CHECK: adds x12, x13, x14, asr #39 ; encoding: [0xac,0x9d,0x8e,0xab]147 148  subs w12, w13, w14149  subs x12, x13, x14150  subs w12, w13, w14, lsl #12151  subs x12, x13, x14, lsl #12152  subs x12, x13, x14, lsr #42153  subs x12, x13, x14, asr #39154 155; CHECK: subs w12, w13, w14          ; encoding: [0xac,0x01,0x0e,0x6b]156; CHECK: subs x12, x13, x14          ; encoding: [0xac,0x01,0x0e,0xeb]157; CHECK: subs w12, w13, w14, lsl #12 ; encoding: [0xac,0x31,0x0e,0x6b]158; CHECK: subs x12, x13, x14, lsl #12 ; encoding: [0xac,0x31,0x0e,0xeb]159; CHECK: subs x12, x13, x14, lsr #42 ; encoding: [0xac,0xa9,0x4e,0xeb]160; CHECK: subs x12, x13, x14, asr #39 ; encoding: [0xac,0x9d,0x8e,0xeb]161 162; Check use of upper case register names rdar://14354073163  add X2, X2, X2164; CHECK: add x2, x2, x2              ; encoding: [0x42,0x00,0x02,0x8b]165 166;==---------------------------------------------------------------------------==167; Add/Subtract with (optional) extend168;==---------------------------------------------------------------------------==169 170  add w1, w2, w3, uxtb171  add w1, w2, w3, uxth172  add w1, w2, w3, uxtw173  add w1, w2, w3, uxtx174  add w1, w2, w3, sxtb175  add w1, w2, w3, sxth176  add w1, w2, w3, sxtw177  add w1, w2, w3, sxtx178 179; CHECK: add w1, w2, w3, uxtb        ; encoding: [0x41,0x00,0x23,0x0b]180; CHECK: add w1, w2, w3, uxth        ; encoding: [0x41,0x20,0x23,0x0b]181; CHECK: add w1, w2, w3, uxtw        ; encoding: [0x41,0x40,0x23,0x0b]182; CHECK: add w1, w2, w3, uxtx        ; encoding: [0x41,0x60,0x23,0x0b]183; CHECK: add w1, w2, w3, sxtb        ; encoding: [0x41,0x80,0x23,0x0b]184; CHECK: add w1, w2, w3, sxth        ; encoding: [0x41,0xa0,0x23,0x0b]185; CHECK: add w1, w2, w3, sxtw        ; encoding: [0x41,0xc0,0x23,0x0b]186; CHECK: add w1, w2, w3, sxtx        ; encoding: [0x41,0xe0,0x23,0x0b]187 188  add x1, x2, w3, uxtb189  add x1, x2, w3, uxth190  add x1, x2, w3, uxtw191  add x1, x2, w3, sxtb192  add x1, x2, w3, sxth193  add x1, x2, w3, sxtw194 195; CHECK: add x1, x2, w3, uxtb        ; encoding: [0x41,0x00,0x23,0x8b]196; CHECK: add x1, x2, w3, uxth        ; encoding: [0x41,0x20,0x23,0x8b]197; CHECK: add x1, x2, w3, uxtw        ; encoding: [0x41,0x40,0x23,0x8b]198; CHECK: add x1, x2, w3, sxtb        ; encoding: [0x41,0x80,0x23,0x8b]199; CHECK: add x1, x2, w3, sxth        ; encoding: [0x41,0xa0,0x23,0x8b]200; CHECK: add x1, x2, w3, sxtw        ; encoding: [0x41,0xc0,0x23,0x8b]201 202  add w1, wsp, w3203  add w1, wsp, w3, uxtw #0204  add w2, wsp, w3, lsl #1205  add sp, x2, x3206  add sp, x2, x3, uxtx #0207 208; CHECK: add w1, wsp, w3             ; encoding: [0xe1,0x43,0x23,0x0b]209; CHECK: add w1, wsp, w3             ; encoding: [0xe1,0x43,0x23,0x0b]210; CHECK: add w2, wsp, w3, lsl #1     ; encoding: [0xe2,0x47,0x23,0x0b]211; CHECK: add sp, x2, x3              ; encoding: [0x5f,0x60,0x23,0x8b]212; CHECK: add sp, x2, x3              ; encoding: [0x5f,0x60,0x23,0x8b]213 214  sub w1, w2, w3, uxtb215  sub w1, w2, w3, uxth216  sub w1, w2, w3, uxtw217  sub w1, w2, w3, uxtx218  sub w1, w2, w3, sxtb219  sub w1, w2, w3, sxth220  sub w1, w2, w3, sxtw221  sub w1, w2, w3, sxtx222 223; CHECK: sub w1, w2, w3, uxtb        ; encoding: [0x41,0x00,0x23,0x4b]224; CHECK: sub w1, w2, w3, uxth        ; encoding: [0x41,0x20,0x23,0x4b]225; CHECK: sub w1, w2, w3, uxtw        ; encoding: [0x41,0x40,0x23,0x4b]226; CHECK: sub w1, w2, w3, uxtx        ; encoding: [0x41,0x60,0x23,0x4b]227; CHECK: sub w1, w2, w3, sxtb        ; encoding: [0x41,0x80,0x23,0x4b]228; CHECK: sub w1, w2, w3, sxth        ; encoding: [0x41,0xa0,0x23,0x4b]229; CHECK: sub w1, w2, w3, sxtw        ; encoding: [0x41,0xc0,0x23,0x4b]230; CHECK: sub w1, w2, w3, sxtx        ; encoding: [0x41,0xe0,0x23,0x4b]231 232  sub x1, x2, w3, uxtb233  sub x1, x2, w3, uxth234  sub x1, x2, w3, uxtw235  sub x1, x2, w3, sxtb236  sub x1, x2, w3, sxth237  sub x1, x2, w3, sxtw238 239; CHECK: sub x1, x2, w3, uxtb        ; encoding: [0x41,0x00,0x23,0xcb]240; CHECK: sub x1, x2, w3, uxth        ; encoding: [0x41,0x20,0x23,0xcb]241; CHECK: sub x1, x2, w3, uxtw        ; encoding: [0x41,0x40,0x23,0xcb]242; CHECK: sub x1, x2, w3, sxtb        ; encoding: [0x41,0x80,0x23,0xcb]243; CHECK: sub x1, x2, w3, sxth        ; encoding: [0x41,0xa0,0x23,0xcb]244; CHECK: sub x1, x2, w3, sxtw        ; encoding: [0x41,0xc0,0x23,0xcb]245 246  sub w1, wsp, w3247  sub w1, wsp, w3, uxtw #0248  sub sp, x2, x3249  sub sp, x2, x3, uxtx #0250  sub sp, x3, x7, lsl #4251 252; CHECK: sub w1, wsp, w3             ; encoding: [0xe1,0x43,0x23,0x4b]253; CHECK: sub w1, wsp, w3             ; encoding: [0xe1,0x43,0x23,0x4b]254; CHECK: sub sp, x2, x3              ; encoding: [0x5f,0x60,0x23,0xcb]255; CHECK: sub sp, x2, x3              ; encoding: [0x5f,0x60,0x23,0xcb]256; CHECK: sp, x3, x7, lsl #4          ; encoding: [0x7f,0x70,0x27,0xcb]257 258  adds w1, w2, w3, uxtb259  adds w1, w2, w3, uxth260  adds w1, w2, w3, uxtw261  adds w1, w2, w3, uxtx262  adds w1, w2, w3, sxtb263  adds w1, w2, w3, sxth264  adds w1, w2, w3, sxtw265  adds w1, w2, w3, sxtx266 267; CHECK: adds w1, w2, w3, uxtb       ; encoding: [0x41,0x00,0x23,0x2b]268; CHECK: adds w1, w2, w3, uxth       ; encoding: [0x41,0x20,0x23,0x2b]269; CHECK: adds w1, w2, w3, uxtw       ; encoding: [0x41,0x40,0x23,0x2b]270; CHECK: adds w1, w2, w3, uxtx       ; encoding: [0x41,0x60,0x23,0x2b]271; CHECK: adds w1, w2, w3, sxtb       ; encoding: [0x41,0x80,0x23,0x2b]272; CHECK: adds w1, w2, w3, sxth       ; encoding: [0x41,0xa0,0x23,0x2b]273; CHECK: adds w1, w2, w3, sxtw       ; encoding: [0x41,0xc0,0x23,0x2b]274; CHECK: adds w1, w2, w3, sxtx       ; encoding: [0x41,0xe0,0x23,0x2b]275 276  adds x1, x2, w3, uxtb277  adds x1, x2, w3, uxth278  adds x1, x2, w3, uxtw279  adds x1, x2, w3, uxtx280  adds x1, x2, w3, sxtb281  adds x1, x2, w3, sxth282  adds x1, x2, w3, sxtw283  adds x1, x2, w3, sxtx284 285; CHECK: adds x1, x2, w3, uxtb       ; encoding: [0x41,0x00,0x23,0xab]286; CHECK: adds x1, x2, w3, uxth       ; encoding: [0x41,0x20,0x23,0xab]287; CHECK: adds x1, x2, w3, uxtw       ; encoding: [0x41,0x40,0x23,0xab]288; CHECK: adds x1, x2, w3, uxtx       ; encoding: [0x41,0x60,0x23,0xab]289; CHECK: adds x1, x2, w3, sxtb       ; encoding: [0x41,0x80,0x23,0xab]290; CHECK: adds x1, x2, w3, sxth       ; encoding: [0x41,0xa0,0x23,0xab]291; CHECK: adds x1, x2, w3, sxtw       ; encoding: [0x41,0xc0,0x23,0xab]292; CHECK: adds x1, x2, w3, sxtx       ; encoding: [0x41,0xe0,0x23,0xab]293 294  adds w1, wsp, w3295  adds w1, wsp, w3, uxtw #0296  adds wzr, wsp, w3, lsl #4297 298; CHECK: adds w1, wsp, w3            ; encoding: [0xe1,0x43,0x23,0x2b]299; CHECK: adds w1, wsp, w3            ; encoding: [0xe1,0x43,0x23,0x2b]300; CHECK: cmn wsp, w3, lsl #4         ; encoding: [0xff,0x53,0x23,0x2b]301 302  subs w1, w2, w3, uxtb303  subs w1, w2, w3, uxth304  subs w1, w2, w3, uxtw305  subs w1, w2, w3, uxtx306  subs w1, w2, w3, sxtb307  subs w1, w2, w3, sxth308  subs w1, w2, w3, sxtw309  subs w1, w2, w3, sxtx310 311; CHECK: subs w1, w2, w3, uxtb       ; encoding: [0x41,0x00,0x23,0x6b]312; CHECK: subs w1, w2, w3, uxth       ; encoding: [0x41,0x20,0x23,0x6b]313; CHECK: subs w1, w2, w3, uxtw       ; encoding: [0x41,0x40,0x23,0x6b]314; CHECK: subs w1, w2, w3, uxtx       ; encoding: [0x41,0x60,0x23,0x6b]315; CHECK: subs w1, w2, w3, sxtb       ; encoding: [0x41,0x80,0x23,0x6b]316; CHECK: subs w1, w2, w3, sxth       ; encoding: [0x41,0xa0,0x23,0x6b]317; CHECK: subs w1, w2, w3, sxtw       ; encoding: [0x41,0xc0,0x23,0x6b]318; CHECK: subs w1, w2, w3, sxtx       ; encoding: [0x41,0xe0,0x23,0x6b]319 320  subs x1, x2, w3, uxtb321  subs x1, x2, w3, uxth322  subs x1, x2, w3, uxtw323  subs x1, x2, w3, uxtx324  subs x1, x2, w3, sxtb325  subs x1, x2, w3, sxth326  subs x1, x2, w3, sxtw327  subs x1, x2, w3, sxtx328 329; CHECK: subs x1, x2, w3, uxtb       ; encoding: [0x41,0x00,0x23,0xeb]330; CHECK: subs x1, x2, w3, uxth       ; encoding: [0x41,0x20,0x23,0xeb]331; CHECK: subs x1, x2, w3, uxtw       ; encoding: [0x41,0x40,0x23,0xeb]332; CHECK: subs x1, x2, w3, uxtx       ; encoding: [0x41,0x60,0x23,0xeb]333; CHECK: subs x1, x2, w3, sxtb       ; encoding: [0x41,0x80,0x23,0xeb]334; CHECK: subs x1, x2, w3, sxth       ; encoding: [0x41,0xa0,0x23,0xeb]335; CHECK: subs x1, x2, w3, sxtw       ; encoding: [0x41,0xc0,0x23,0xeb]336; CHECK: subs x1, x2, w3, sxtx       ; encoding: [0x41,0xe0,0x23,0xeb]337 338  subs w1, wsp, w3339  subs w1, wsp, w3, uxtw #0340 341; CHECK: subs w1, wsp, w3            ; encoding: [0xe1,0x43,0x23,0x6b]342; CHECK: subs w1, wsp, w3            ; encoding: [0xe1,0x43,0x23,0x6b]343 344  cmp wsp, w9, lsl #0345  subs x3, sp, x9, lsl #2346  cmp wsp, w8, uxtw347  subs wzr, wsp, w8, uxtw348  cmp sp, w8, uxtw349  subs xzr, sp, w8, uxtw350 351; CHECK: cmp wsp, w9                 ; encoding: [0xff,0x43,0x29,0x6b]352; CHECK: subs x3, sp, x9, lsl #2     ; encoding: [0xe3,0x6b,0x29,0xeb]353; CHECK: cmp wsp, w8                 ; encoding: [0xff,0x43,0x28,0x6b]354; CHECK: cmp wsp, w8                 ; encoding: [0xff,0x43,0x28,0x6b]355; CHECK: cmp sp, w8, uxtw            ; encoding: [0xff,0x43,0x28,0xeb]356; CHECK: cmp sp, w8, uxtw            ; encoding: [0xff,0x43,0x28,0xeb]357 358  sub wsp, w9, w8, uxtw359  sub w1, wsp, w8, uxtw360  sub wsp, wsp, w8, uxtw361  sub sp, x9, w8, uxtw362  sub x1, sp, w8, uxtw363  sub sp, sp, w8, uxtw364  subs w1, wsp, w8, uxtw365  subs x1, sp, w8, uxtw366 367; CHECK: sub wsp, w9, w8             ; encoding: [0x3f,0x41,0x28,0x4b]368; CHECK: sub w1, wsp, w8             ; encoding: [0xe1,0x43,0x28,0x4b]369; CHECK: sub wsp, wsp, w8            ; encoding: [0xff,0x43,0x28,0x4b]370; CHECK: sub sp, x9, w8, uxtw        ; encoding: [0x3f,0x41,0x28,0xcb]371; CHECK: sub x1, sp, w8, uxtw        ; encoding: [0xe1,0x43,0x28,0xcb]372; CHECK: sub sp, sp, w8, uxtw        ; encoding: [0xff,0x43,0x28,0xcb]373; CHECK: subs w1, wsp, w8            ; encoding: [0xe1,0x43,0x28,0x6b]374; CHECK: subs x1, sp, w8, uxtw       ; encoding: [0xe1,0x43,0x28,0xeb]375 376;==---------------------------------------------------------------------------==377; Signed/Unsigned divide378;==---------------------------------------------------------------------------==379 380  sdiv w1, w2, w3381  sdiv x1, x2, x3382  udiv w1, w2, w3383  udiv x1, x2, x3384 385; CHECK: sdiv w1, w2, w3             ; encoding: [0x41,0x0c,0xc3,0x1a]386; CHECK: sdiv x1, x2, x3             ; encoding: [0x41,0x0c,0xc3,0x9a]387; CHECK: udiv w1, w2, w3             ; encoding: [0x41,0x08,0xc3,0x1a]388; CHECK: udiv x1, x2, x3             ; encoding: [0x41,0x08,0xc3,0x9a]389 390;==---------------------------------------------------------------------------==391; Variable shifts392;==---------------------------------------------------------------------------==393 394  asrv w1, w2, w3395  asrv x1, x2, x3396  asr w1, w2, w3397  asr x1, x2, x3398  lslv w1, w2, w3399  lslv x1, x2, x3400  lsl w1, w2, w3401  lsl x1, x2, x3402  lsrv w1, w2, w3403  lsrv x1, x2, x3404  lsr w1, w2, w3405  lsr x1, x2, x3406  rorv w1, w2, w3407  rorv x1, x2, x3408  ror w1, w2, w3409  ror x1, x2, x3410 411; CHECK: encoding: [0x41,0x28,0xc3,0x1a]412; CHECK: encoding: [0x41,0x28,0xc3,0x9a]413; CHECK: encoding: [0x41,0x28,0xc3,0x1a]414; CHECK: encoding: [0x41,0x28,0xc3,0x9a]415; CHECK: encoding: [0x41,0x20,0xc3,0x1a]416; CHECK: encoding: [0x41,0x20,0xc3,0x9a]417; CHECK: encoding: [0x41,0x20,0xc3,0x1a]418; CHECK: encoding: [0x41,0x20,0xc3,0x9a]419; CHECK: encoding: [0x41,0x24,0xc3,0x1a]420; CHECK: encoding: [0x41,0x24,0xc3,0x9a]421; CHECK: encoding: [0x41,0x24,0xc3,0x1a]422; CHECK: encoding: [0x41,0x24,0xc3,0x9a]423; CHECK: encoding: [0x41,0x2c,0xc3,0x1a]424; CHECK: encoding: [0x41,0x2c,0xc3,0x9a]425; CHECK: encoding: [0x41,0x2c,0xc3,0x1a]426; CHECK: encoding: [0x41,0x2c,0xc3,0x9a]427 428;==---------------------------------------------------------------------------==429; One operand instructions430;==---------------------------------------------------------------------------==431 432  cls w1, w2433  cls x1, x2434  clz w1, w2435  clz x1, x2436  rbit w1, w2437  rbit x1, x2438  rev w1, w2439  rev x1, x2440  rev16 w1, w2441  rev16 x1, x2442  rev32 x1, x2443 444; CHECK: encoding: [0x41,0x14,0xc0,0x5a]445; CHECK: encoding: [0x41,0x14,0xc0,0xda]446; CHECK: encoding: [0x41,0x10,0xc0,0x5a]447; CHECK: encoding: [0x41,0x10,0xc0,0xda]448; CHECK: encoding: [0x41,0x00,0xc0,0x5a]449; CHECK: encoding: [0x41,0x00,0xc0,0xda]450; CHECK: encoding: [0x41,0x08,0xc0,0x5a]451; CHECK: encoding: [0x41,0x0c,0xc0,0xda]452; CHECK: encoding: [0x41,0x04,0xc0,0x5a]453; CHECK: encoding: [0x41,0x04,0xc0,0xda]454; CHECK: encoding: [0x41,0x08,0xc0,0xda]455 456;==---------------------------------------------------------------------------==457; 6.6.1 Multiply-add instructions458;==---------------------------------------------------------------------------==459 460  madd   w1, w2, w3, w4461  madd   x1, x2, x3, x4462  msub   w1, w2, w3, w4463  msub   x1, x2, x3, x4464  smaddl x1, w2, w3, x4465  smsubl x1, w2, w3, x4466  umaddl x1, w2, w3, x4467  umsubl x1, w2, w3, x4468 469; CHECK: madd   w1, w2, w3, w4       ; encoding: [0x41,0x10,0x03,0x1b]470; CHECK: madd   x1, x2, x3, x4       ; encoding: [0x41,0x10,0x03,0x9b]471; CHECK: msub   w1, w2, w3, w4       ; encoding: [0x41,0x90,0x03,0x1b]472; CHECK: msub   x1, x2, x3, x4       ; encoding: [0x41,0x90,0x03,0x9b]473; CHECK: smaddl x1, w2, w3, x4       ; encoding: [0x41,0x10,0x23,0x9b]474; CHECK: smsubl x1, w2, w3, x4       ; encoding: [0x41,0x90,0x23,0x9b]475; CHECK: umaddl x1, w2, w3, x4       ; encoding: [0x41,0x10,0xa3,0x9b]476; CHECK: umsubl x1, w2, w3, x4       ; encoding: [0x41,0x90,0xa3,0x9b]477 478;==---------------------------------------------------------------------------==479; Multiply-high instructions480;==---------------------------------------------------------------------------==481 482  smulh x1, x2, x3483  umulh x1, x2, x3484 485; CHECK: smulh x1, x2, x3            ; encoding: [0x41,0x7c,0x43,0x9b]486; CHECK: umulh x1, x2, x3            ; encoding: [0x41,0x7c,0xc3,0x9b]487 488;==---------------------------------------------------------------------------==489; Move immediate instructions490;==---------------------------------------------------------------------------==491 492  movz w0, #1493  movz x0, #1494  movz w0, #1, lsl #16495  movz x0, #1, lsl #16496 497; CHECK: mov w0, #1                 ; encoding: [0x20,0x00,0x80,0x52]498; CHECK: mov x0, #1                 ; encoding: [0x20,0x00,0x80,0xd2]499; CHECK: mov w0, #65536             ; encoding: [0x20,0x00,0xa0,0x52]500; CHECK: mov x0, #65536             ; encoding: [0x20,0x00,0xa0,0xd2]501 502  movn w0, #2503  movn x0, #2504  movn w0, #2, lsl #16505  movn x0, #2, lsl #16506 507; CHECK: mov w0, #-3                 ; encoding: [0x40,0x00,0x80,0x12]508; CHECK: mov x0, #-3                 ; encoding: [0x40,0x00,0x80,0x92]509; CHECK: mov w0, #-131073            ; encoding: [0x40,0x00,0xa0,0x12]510; CHECK: mov x0, #-131073            ; encoding: [0x40,0x00,0xa0,0x92]511 512  movk w0, #1513  movk x0, #1514  movk w0, #1, lsl #16515  movk x0, #1, lsl #16516 517; CHECK: movk w0, #1                 ; encoding: [0x20,0x00,0x80,0x72]518; CHECK: movk x0, #1                 ; encoding: [0x20,0x00,0x80,0xf2]519; CHECK: movk w0, #1, lsl #16        ; encoding: [0x20,0x00,0xa0,0x72]520; CHECK: movk x0, #1, lsl #16        ; encoding: [0x20,0x00,0xa0,0xf2]521 522;==---------------------------------------------------------------------------==523; Conditionally set flags instructions524;==---------------------------------------------------------------------------==525 526  ccmn w1, #2, #3, eq527  ccmn x1, #2, #3, eq528  ccmp w1, #2, #3, eq529  ccmp x1, #2, #3, eq530 531; CHECK: encoding: [0x23,0x08,0x42,0x3a]532; CHECK: encoding: [0x23,0x08,0x42,0xba]533; CHECK: encoding: [0x23,0x08,0x42,0x7a]534; CHECK: encoding: [0x23,0x08,0x42,0xfa]535 536  ccmn w1, w2, #3, eq537  ccmn x1, x2, #3, eq538  ccmp w1, w2, #3, eq539  ccmp x1, x2, #3, eq540 541; CHECK: encoding: [0x23,0x00,0x42,0x3a]542; CHECK: encoding: [0x23,0x00,0x42,0xba]543; CHECK: encoding: [0x23,0x00,0x42,0x7a]544; CHECK: encoding: [0x23,0x00,0x42,0xfa]545 546;==---------------------------------------------------------------------------==547; Conditional select instructions548;==---------------------------------------------------------------------------==549 550  csel w1, w2, w3, eq551  csel x1, x2, x3, eq552  csinc w1, w2, w3, eq553  csinc x1, x2, x3, eq554  csinv w1, w2, w3, eq555  csinv x1, x2, x3, eq556  csneg w1, w2, w3, eq557  csneg x1, x2, x3, eq558 559; CHECK: encoding: [0x41,0x00,0x83,0x1a]560; CHECK: encoding: [0x41,0x00,0x83,0x9a]561; CHECK: encoding: [0x41,0x04,0x83,0x1a]562; CHECK: encoding: [0x41,0x04,0x83,0x9a]563; CHECK: encoding: [0x41,0x00,0x83,0x5a]564; CHECK: encoding: [0x41,0x00,0x83,0xda]565; CHECK: encoding: [0x41,0x04,0x83,0x5a]566; CHECK: encoding: [0x41,0x04,0x83,0xda]567 568; Make sure we handle upper case, too. In particular, condition codes.569  CSEL W16, W7, W27, EQ570  CSEL W15, W6, W26, NE571  CSEL W14, W5, W25, CS572  CSEL W13, W4, W24, HS573  csel w12, w3, w23, CC574  csel w11, w2, w22, LO575  csel w10, w1, w21, MI576  csel x9, x9, x1, PL577  csel x8, x8, x2, VS578  CSEL X7, X7, X3, VC579  CSEL X6, X7, X4, HI580  CSEL X5, X6, X5, LS581  CSEL X4, X5, X6, GE582  csel x3, x4, x7, LT583  csel x2, x3, x8, GT584  csel x1, x2, x9, LE585  csel x10, x1, x20, AL586 587; CHECK: csel	w16, w7, w27, eq        ; encoding: [0xf0,0x00,0x9b,0x1a]588; CHECK: csel	w15, w6, w26, ne        ; encoding: [0xcf,0x10,0x9a,0x1a]589; CHECK: csel	w14, w5, w25, hs        ; encoding: [0xae,0x20,0x99,0x1a]590; CHECK: csel	w13, w4, w24, hs        ; encoding: [0x8d,0x20,0x98,0x1a]591; CHECK: csel	w12, w3, w23, lo        ; encoding: [0x6c,0x30,0x97,0x1a]592; CHECK: csel	w11, w2, w22, lo        ; encoding: [0x4b,0x30,0x96,0x1a]593; CHECK: csel	w10, w1, w21, mi        ; encoding: [0x2a,0x40,0x95,0x1a]594; CHECK: csel	x9, x9, x1, pl          ; encoding: [0x29,0x51,0x81,0x9a]595; CHECK: csel	x8, x8, x2, vs          ; encoding: [0x08,0x61,0x82,0x9a]596; CHECK: csel	x7, x7, x3, vc          ; encoding: [0xe7,0x70,0x83,0x9a]597; CHECK: csel	x6, x7, x4, hi          ; encoding: [0xe6,0x80,0x84,0x9a]598; CHECK: csel	x5, x6, x5, ls          ; encoding: [0xc5,0x90,0x85,0x9a]599; CHECK: csel	x4, x5, x6, ge          ; encoding: [0xa4,0xa0,0x86,0x9a]600; CHECK: csel	x3, x4, x7, lt          ; encoding: [0x83,0xb0,0x87,0x9a]601; CHECK: csel	x2, x3, x8, gt          ; encoding: [0x62,0xc0,0x88,0x9a]602; CHECK: csel	x1, x2, x9, le          ; encoding: [0x41,0xd0,0x89,0x9a]603; CHECK: csel	x10, x1, x20, al        ; encoding: [0x2a,0xe0,0x94,0x9a]604 605 606;==---------------------------------------------------------------------------==607; Scalar saturating arithmetic608;==---------------------------------------------------------------------------==609  uqxtn b4, h2610  uqxtn h2, s3611  uqxtn s9, d2612 613; CHECK: uqxtn b4, h2                  ; encoding: [0x44,0x48,0x21,0x7e]614; CHECK: uqxtn h2, s3                  ; encoding: [0x62,0x48,0x61,0x7e]615; CHECK: uqxtn s9, d2                  ; encoding: [0x49,0x48,0xa1,0x7e]616