Compiler projects using llvm
; RUN: llvm-mc -triple aarch64-apple-ios -mattr=+lse %s | FileCheck %s

    ; CHECK: ldaddab w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldaddah w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: ldadda w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldadda x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    ldaddab w3, wzr, [x5]
    ldaddah w5, wzr, [x0]
    ldadda w7, wzr, [x5]
    ldadda x9, xzr, [sp]

    ; CHECK: ldaddalb w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldaddalh w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: ldaddal w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldaddal x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    ldaddalb w3, wzr, [x5]
    ldaddalh w5, wzr, [x0]
    ldaddal w7, wzr, [x5]
    ldaddal x9, xzr, [sp]

    ; CHECK: ldclrab w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldclrah w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: ldclra w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldclra x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    ldclrab w3, wzr, [x5]
    ldclrah w5, wzr, [x0]
    ldclra w7, wzr, [x5]
    ldclra x9, xzr, [sp]

    ; CHECK: ldclralb w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldclralh w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: ldclral w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldclral x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    ldclralb w3, wzr, [x5]
    ldclralh w5, wzr, [x0]
    ldclral w7, wzr, [x5]
    ldclral x9, xzr, [sp]

    ; CHECK: ldeorab w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldeorah w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: ldeora w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldeora x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    ldeorab w3, wzr, [x5]
    ldeorah w5, wzr, [x0]
    ldeora w7, wzr, [x5]
    ldeora x9, xzr, [sp]

    ; CHECK: ldeoralb w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldeoralh w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: ldeoral w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldeoral x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    ldeoralb w3, wzr, [x5]
    ldeoralh w5, wzr, [x0]
    ldeoral w7, wzr, [x5]
    ldeoral x9, xzr, [sp]

    ; CHECK: ldsetab w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldsetah w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: ldseta w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldseta x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    ldsetab w3, wzr, [x5]
    ldsetah w5, wzr, [x0]
    ldseta w7, wzr, [x5]
    ldseta x9, xzr, [sp]

    ; CHECK: ldsetalb w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldsetalh w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: ldsetal w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldsetal x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    ldsetalb w3, wzr, [x5]
    ldsetalh w5, wzr, [x0]
    ldsetal w7, wzr, [x5]
    ldsetal x9, xzr, [sp]

    ; CHECK: ldsmaxab w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldsmaxah w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: ldsmaxa w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldsmaxa x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    ldsmaxab w3, wzr, [x5]
    ldsmaxah w5, wzr, [x0]
    ldsmaxa w7, wzr, [x5]
    ldsmaxa x9, xzr, [sp]

    ; CHECK: ldsmaxalb w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldsmaxalh w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: ldsmaxal w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldsmaxal x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    ldsmaxalb w3, wzr, [x5]
    ldsmaxalh w5, wzr, [x0]
    ldsmaxal w7, wzr, [x5]
    ldsmaxal x9, xzr, [sp]

    ; CHECK: ldsminab w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldsminah w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: ldsmina w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldsmina x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    ldsminab w3, wzr, [x5]
    ldsminah w5, wzr, [x0]
    ldsmina w7, wzr, [x5]
    ldsmina x9, xzr, [sp]

    ; CHECK: ldsminalb w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldsminalh w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: ldsminal w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldsminal x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    ldsminalb w3, wzr, [x5]
    ldsminalh w5, wzr, [x0]
    ldsminal w7, wzr, [x5]
    ldsminal x9, xzr, [sp]

    ; CHECK: ldumaxab w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldumaxah w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: ldumaxa w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldumaxa x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    ldumaxab w3, wzr, [x5]
    ldumaxah w5, wzr, [x0]
    ldumaxa w7, wzr, [x5]
    ldumaxa x9, xzr, [sp]

    ; CHECK: ldumaxalb w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldumaxalh w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: ldumaxal w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldumaxal x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    ldumaxalb w3, wzr, [x5]
    ldumaxalh w5, wzr, [x0]
    ldumaxal w7, wzr, [x5]
    ldumaxal x9, xzr, [sp]

    ; CHECK: lduminab w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: lduminah w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: ldumina w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: ldumina x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    lduminab w3, wzr, [x5]
    lduminah w5, wzr, [x0]
    ldumina w7, wzr, [x5]
    ldumina x9, xzr, [sp]

    ; CHECK: lduminalb w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: lduminalh w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: lduminal w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: lduminal x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    lduminalb w3, wzr, [x5]
    lduminalh w5, wzr, [x0]
    lduminal w7, wzr, [x5]
    lduminal x9, xzr, [sp]

    ; CHECK: swpab w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: swpah w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: swpa w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: swpa x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    swpab w3, wzr, [x5]
    swpah w5, wzr, [x0]
    swpa w7, wzr, [x5]
    swpa x9, xzr, [sp]

    ; CHECK: swpalb w3, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: swpalh w5, wzr, [x0] ; acquire semantics dropped since destination is zero
    ; CHECK: swpal w7, wzr, [x5] ; acquire semantics dropped since destination is zero
    ; CHECK: swpal x9, xzr, [sp] ; acquire semantics dropped since destination is zero
    swpalb w3, wzr, [x5]
    swpalh w5, wzr, [x0]
    swpal w7, wzr, [x5]
    swpal x9, xzr, [sp]

    ; CHECK: ldaddal xzr, x3, [x0]{{$}}
    ; CHECK: ldeora wzr, w7, [x5]{{$}}
    ; CHECK: ldsminb w5, w9, [sp]{{$}}
    ldaddal xzr, x3, [x0]
    ldeora wzr, w7, [x5]
    ldsminb w5, w9, [sp]

    ; CAS instructions aren't affected.

    ; CHECK: casab w3, wzr, [x5]{{$}}
    ; CHECK: casah w5, wzr, [x0]{{$}}
    ; CHECK: casa w7, wzr, [x5]{{$}}
    ; CHECK: casa x9, xzr, [sp]{{$}}
    casab w3, wzr, [x5]
    casah w5, wzr, [x0]
    casa w7, wzr, [x5]
    casa x9, xzr, [sp]

    ; CHECK: casalb w3, wzr, [x5]{{$}}
    ; CHECK: casalh w5, wzr, [x0]{{$}}
    ; CHECK: casal w7, wzr, [x5]{{$}}
    ; CHECK: casal x9, xzr, [sp]{{$}}
    casalb w3, wzr, [x5]
    casalh w5, wzr, [x0]
    casal w7, wzr, [x5]
    casal x9, xzr, [sp]