brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.0 KiB · c37a21b Raw
105 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=arm-linux-gnueabi -asm-verbose=false -verify-machineinstrs | FileCheck %s -check-prefix=CHECK-ARM3; RUN: llc < %s -mtriple=thumb-linux-gnueabi -asm-verbose=false -verify-machineinstrs | FileCheck %s -check-prefix=CHECK-THUMB4 5; RUN: llc < %s -mtriple=armv6-linux-gnueabi -asm-verbose=false -verify-machineinstrs | FileCheck %s -check-prefix=CHECK-ARMV66; RUN: llc < %s -mtriple=thumbv6-linux-gnueabi -asm-verbose=false -verify-machineinstrs | FileCheck %s -check-prefix=CHECK-THUMBV67 8; RUN: llc < %s -mtriple=armv7-linux-gnueabi -asm-verbose=false -verify-machineinstrs | FileCheck %s -check-prefix=CHECK-ARMV79; RUN: llc < %s -mtriple=thumbv7-linux-gnueabi -asm-verbose=false -verify-machineinstrs | FileCheck %s -check-prefix=CHECK-THUMBV710 11define zeroext i1 @test_cmpxchg_res_i8(ptr %addr, i8 %desired, i8 zeroext %new) {12; CHECK-ARM-LABEL: test_cmpxchg_res_i8:13; CHECK-ARM:         .save {r4, lr}14; CHECK-ARM-NEXT:    push {r4, lr}15; CHECK-ARM-NEXT:    mov r4, r116; CHECK-ARM-NEXT:    bl __sync_val_compare_and_swap_117; CHECK-ARM-NEXT:    and r1, r4, #25518; CHECK-ARM-NEXT:    sub r0, r0, r119; CHECK-ARM-NEXT:    rsbs r1, r0, #020; CHECK-ARM-NEXT:    adc r0, r0, r121; CHECK-ARM-NEXT:    pop {r4, lr}22; CHECK-ARM-NEXT:    mov pc, lr23;24; CHECK-THUMB-LABEL: test_cmpxchg_res_i8:25; CHECK-THUMB:         .save {r4, lr}26; CHECK-THUMB-NEXT:    push {r4, lr}27; CHECK-THUMB-NEXT:    movs r4, r128; CHECK-THUMB-NEXT:    bl __sync_val_compare_and_swap_129; CHECK-THUMB-NEXT:    movs r1, #25530; CHECK-THUMB-NEXT:    ands r1, r431; CHECK-THUMB-NEXT:    subs r1, r0, r132; CHECK-THUMB-NEXT:    rsbs r0, r1, #033; CHECK-THUMB-NEXT:    adcs r0, r134; CHECK-THUMB-NEXT:    pop {r4}35; CHECK-THUMB-NEXT:    pop {r1}36; CHECK-THUMB-NEXT:    bx r137;38; CHECK-ARMV6-LABEL: test_cmpxchg_res_i8:39; CHECK-ARMV6:         .fnstart40; CHECK-ARMV6-NEXT:    uxtb r12, r141; CHECK-ARMV6-NEXT:  .LBB0_1:42; CHECK-ARMV6-NEXT:    ldrexb r1, [r0]43; CHECK-ARMV6-NEXT:    cmp r1, r1244; CHECK-ARMV6-NEXT:    movne r0, #045; CHECK-ARMV6-NEXT:    bxne lr46; CHECK-ARMV6-NEXT:  .LBB0_2:47; CHECK-ARMV6-NEXT:    strexb r3, r2, [r0]48; CHECK-ARMV6-NEXT:    mov r1, #149; CHECK-ARMV6-NEXT:    cmp r3, #050; CHECK-ARMV6-NEXT:    moveq r0, r151; CHECK-ARMV6-NEXT:    bxeq lr52; CHECK-ARMV6-NEXT:    b .LBB0_153;54; CHECK-THUMBV6-LABEL: test_cmpxchg_res_i8:55; CHECK-THUMBV6:         .save {r4, lr}56; CHECK-THUMBV6-NEXT:    push {r4, lr}57; CHECK-THUMBV6-NEXT:    mov r4, r158; CHECK-THUMBV6-NEXT:    bl __sync_val_compare_and_swap_159; CHECK-THUMBV6-NEXT:    uxtb r1, r460; CHECK-THUMBV6-NEXT:    subs r1, r0, r161; CHECK-THUMBV6-NEXT:    rsbs r0, r1, #062; CHECK-THUMBV6-NEXT:    adcs r0, r163; CHECK-THUMBV6-NEXT:    pop {r4, pc}64;65; CHECK-ARMV7-LABEL: test_cmpxchg_res_i8:66; CHECK-ARMV7:         .fnstart67; CHECK-ARMV7-NEXT:    uxtb r12, r168; CHECK-ARMV7-NEXT:  .LBB0_1:69; CHECK-ARMV7-NEXT:    ldrexb r1, [r0]70; CHECK-ARMV7-NEXT:    cmp r1, r1271; CHECK-ARMV7-NEXT:    bne .LBB0_472; CHECK-ARMV7-NEXT:    strexb r3, r2, [r0]73; CHECK-ARMV7-NEXT:    mov r1, #174; CHECK-ARMV7-NEXT:    cmp r3, #075; CHECK-ARMV7-NEXT:    bne .LBB0_1 76; CHECK-ARMV7-NEXT:    mov r0, r177; CHECK-ARMV7-NEXT:    bx lr78; CHECK-ARMV7-NEXT:  .LBB0_4:79; CHECK-ARMV7-NEXT:    mov r1, #080; CHECK-ARMV7-NEXT:    clrex81; CHECK-ARMV7-NEXT:    mov r0, r182; CHECK-ARMV7-NEXT:    bx lr83;84; CHECK-THUMBV7-LABEL: test_cmpxchg_res_i8:85; CHECK-THUMBV7:         uxtb r1, r186; CHECK-THUMBV7-NEXT:  .LBB0_1:87; CHECK-THUMBV7-NEXT:    ldrexb r3, [r0]88; CHECK-THUMBV7-NEXT:    cmp r3, r189; CHECK-THUMBV7-NEXT:    bne .LBB0_390; CHECK-THUMBV7-NEXT:    strexb r3, r2, [r0]91; CHECK-THUMBV7-NEXT:    cmp r3, #092; CHECK-THUMBV7-NEXT:    itt eq93; CHECK-THUMBV7-NEXT:    moveq r0, #194; CHECK-THUMBV7-NEXT:    bxeq lr95; CHECK-THUMBV7-NEXT:    b .LBB0_196; CHECK-THUMBV7-NEXT:  .LBB0_3:97; CHECK-THUMBV7-NEXT:    movs r0, #098; CHECK-THUMBV7-NEXT:    clrex99; CHECK-THUMBV7-NEXT:    bx lr100entry:101  %0 = cmpxchg ptr %addr, i8 %desired, i8 %new monotonic monotonic102  %1 = extractvalue { i8, i1 } %0, 1103  ret i1 %1104}105