brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.1 KiB · 2d8e0e8 Raw
175 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; Make sure that a negative value for the compare-and-swap is zero extended3; from i8/i16 to i32 since it will be compared for equality.4; RUN: llc -mtriple=powerpc64le-linux-gnu -verify-machineinstrs < %s | FileCheck %s5; RUN: llc -mtriple=powerpc64le-linux-gnu -mcpu=pwr7 -verify-machineinstrs < %s | FileCheck %s --check-prefix=CHECK-P76 7@str = private unnamed_addr constant [46 x i8] c"FAILED: __atomic_compare_exchange_n() failed.\00"8@str.1 = private unnamed_addr constant [59 x i8] c"FAILED: __atomic_compare_exchange_n() set the wrong value.\00"9@str.2 = private unnamed_addr constant [7 x i8] c"PASSED\00"10 11define signext i32 @main() nounwind {12; CHECK-LABEL: main:13; CHECK:       # %bb.0: # %L.entry14; CHECK-NEXT:    mflr 015; CHECK-NEXT:    stdu 1, -48(1)16; CHECK-NEXT:    li 3, -3247717; CHECK-NEXT:    std 0, 64(1)18; CHECK-NEXT:    sth 3, 46(1)19; CHECK-NEXT:    addi 3, 1, 4620; CHECK-NEXT:    lharx 4, 0, 321; CHECK-NEXT:    cmplwi 4, 3305922; CHECK-NEXT:    bne- 0, .LBB0_423; CHECK-NEXT:  # %bb.1: # %cmpxchg.fencedstore24; CHECK-NEXT:    sync25; CHECK-NEXT:    li 4, 23426; CHECK-NEXT:  .LBB0_2: # %cmpxchg.trystore27; CHECK-NEXT:    #28; CHECK-NEXT:    sthcx. 4, 0, 329; CHECK-NEXT:    beq+ 0, .LBB0_530; CHECK-NEXT:  # %bb.3: # %cmpxchg.releasedload31; CHECK-NEXT:    #32; CHECK-NEXT:    lharx 5, 0, 333; CHECK-NEXT:    cmplwi 5, 3305934; CHECK-NEXT:    beq+ 0, .LBB0_235; CHECK-NEXT:  .LBB0_4: # %cmpxchg.nostore36; CHECK-NEXT:    lwsync37; CHECK-NEXT:    crxor 20, 20, 2038; CHECK-NEXT:    b .LBB0_639; CHECK-NEXT:  .LBB0_5: # %cmpxchg.success40; CHECK-NEXT:    lwsync41; CHECK-NEXT:    creqv 20, 20, 2042; CHECK-NEXT:  .LBB0_6: # %cmpxchg.end43; CHECK-NEXT:    bc 4, 20, .LBB0_944; CHECK-NEXT:  # %bb.7: # %L.B000045; CHECK-NEXT:    lhz 3, 46(1)46; CHECK-NEXT:    cmplwi 3, 23447; CHECK-NEXT:    bne 0, .LBB0_1048; CHECK-NEXT:  # %bb.8: # %L.B000149; CHECK-NEXT:    addis 3, 2, .L_MergedGlobals@toc@ha50; CHECK-NEXT:    addi 3, 3, .L_MergedGlobals@toc@l51; CHECK-NEXT:    bl puts52; CHECK-NEXT:    nop53; CHECK-NEXT:    li 3, 054; CHECK-NEXT:    b .LBB0_1255; CHECK-NEXT:  .LBB0_9: # %L.B000356; CHECK-NEXT:    addis 3, 2, .L_MergedGlobals@toc@ha57; CHECK-NEXT:    addi 3, 3, .L_MergedGlobals@toc@l58; CHECK-NEXT:    addi 3, 3, 1659; CHECK-NEXT:    b .LBB0_1160; CHECK-NEXT:  .LBB0_10: # %L.B000561; CHECK-NEXT:    addis 3, 2, .L_MergedGlobals@toc@ha62; CHECK-NEXT:    addi 3, 3, .L_MergedGlobals@toc@l63; CHECK-NEXT:    addi 3, 3, 6464; CHECK-NEXT:  .LBB0_11: # %L.B000365; CHECK-NEXT:    bl puts66; CHECK-NEXT:    nop67; CHECK-NEXT:    li 3, 168; CHECK-NEXT:  .LBB0_12: # %L.B000369; CHECK-NEXT:    addi 1, 1, 4870; CHECK-NEXT:    ld 0, 16(1)71; CHECK-NEXT:    mtlr 072; CHECK-NEXT:    blr73;74; CHECK-P7-LABEL: main:75; CHECK-P7:       # %bb.0: # %L.entry76; CHECK-P7-NEXT:    mflr 077; CHECK-P7-NEXT:    stdu 1, -48(1)78; CHECK-P7-NEXT:    li 3, -3247779; CHECK-P7-NEXT:    addi 4, 1, 4680; CHECK-P7-NEXT:    std 0, 64(1)81; CHECK-P7-NEXT:    sth 3, 46(1)82; CHECK-P7-NEXT:    rldicr 3, 4, 0, 6183; CHECK-P7-NEXT:    rlwinm 4, 4, 3, 27, 2784; CHECK-P7-NEXT:    lwarx 5, 0, 385; CHECK-P7-NEXT:    srw 6, 5, 486; CHECK-P7-NEXT:    clrlwi 6, 6, 1687; CHECK-P7-NEXT:    cmplwi 6, 3305988; CHECK-P7-NEXT:    bne- 0, .LBB0_489; CHECK-P7-NEXT:  # %bb.1: # %cmpxchg.fencedstore90; CHECK-P7-NEXT:    lis 6, 091; CHECK-P7-NEXT:    li 7, 23492; CHECK-P7-NEXT:    sync93; CHECK-P7-NEXT:    ori 6, 6, 6553594; CHECK-P7-NEXT:    slw 7, 7, 495; CHECK-P7-NEXT:    slw 6, 6, 496; CHECK-P7-NEXT:    not 6, 697; CHECK-P7-NEXT:  .LBB0_2: # %cmpxchg.trystore98; CHECK-P7-NEXT:    #99; CHECK-P7-NEXT:    and 5, 5, 6100; CHECK-P7-NEXT:    or 5, 5, 7101; CHECK-P7-NEXT:    stwcx. 5, 0, 3102; CHECK-P7-NEXT:    beq+ 0, .LBB0_5103; CHECK-P7-NEXT:  # %bb.3: # %cmpxchg.releasedload104; CHECK-P7-NEXT:    #105; CHECK-P7-NEXT:    lwarx 5, 0, 3106; CHECK-P7-NEXT:    srw 8, 5, 4107; CHECK-P7-NEXT:    clrlwi 8, 8, 16108; CHECK-P7-NEXT:    cmplwi 8, 33059109; CHECK-P7-NEXT:    beq+ 0, .LBB0_2110; CHECK-P7-NEXT:  .LBB0_4: # %cmpxchg.nostore111; CHECK-P7-NEXT:    crxor 20, 20, 20112; CHECK-P7-NEXT:    lwsync113; CHECK-P7-NEXT:    b .LBB0_6114; CHECK-P7-NEXT:  .LBB0_5: # %cmpxchg.success115; CHECK-P7-NEXT:    lwsync116; CHECK-P7-NEXT:    creqv 20, 20, 20117; CHECK-P7-NEXT:  .LBB0_6: # %cmpxchg.end118; CHECK-P7-NEXT:    bc 4, 20, .LBB0_9119; CHECK-P7-NEXT:  # %bb.7: # %L.B0000120; CHECK-P7-NEXT:    lhz 3, 46(1)121; CHECK-P7-NEXT:    cmplwi 3, 234122; CHECK-P7-NEXT:    bne 0, .LBB0_10123; CHECK-P7-NEXT:  # %bb.8: # %L.B0001124; CHECK-P7-NEXT:    addis 3, 2, .L_MergedGlobals@toc@ha125; CHECK-P7-NEXT:    addi 3, 3, .L_MergedGlobals@toc@l126; CHECK-P7-NEXT:    bl puts127; CHECK-P7-NEXT:    nop128; CHECK-P7-NEXT:    li 3, 0129; CHECK-P7-NEXT:    b .LBB0_12130; CHECK-P7-NEXT:  .LBB0_9: # %L.B0003131; CHECK-P7-NEXT:    addis 3, 2, .L_MergedGlobals@toc@ha132; CHECK-P7-NEXT:    addi 3, 3, .L_MergedGlobals@toc@l133; CHECK-P7-NEXT:    addi 3, 3, 16134; CHECK-P7-NEXT:    b .LBB0_11135; CHECK-P7-NEXT:  .LBB0_10: # %L.B0005136; CHECK-P7-NEXT:    addis 3, 2, .L_MergedGlobals@toc@ha137; CHECK-P7-NEXT:    addi 3, 3, .L_MergedGlobals@toc@l138; CHECK-P7-NEXT:    addi 3, 3, 64139; CHECK-P7-NEXT:  .LBB0_11: # %L.B0003140; CHECK-P7-NEXT:    bl puts141; CHECK-P7-NEXT:    nop142; CHECK-P7-NEXT:    li 3, 1143; CHECK-P7-NEXT:  .LBB0_12: # %L.B0003144; CHECK-P7-NEXT:    addi 1, 1, 48145; CHECK-P7-NEXT:    ld 0, 16(1)146; CHECK-P7-NEXT:    mtlr 0147; CHECK-P7-NEXT:    blr148L.entry:149  %value.addr = alloca i16, align 2150  store i16 -32477, ptr %value.addr, align 2151  %0 = cmpxchg ptr %value.addr, i16 -32477, i16 234 seq_cst seq_cst152  %1 = extractvalue { i16, i1 } %0, 1153  br i1 %1, label %L.B0000, label %L.B0003154 155L.B0003:                                          ; preds = %L.entry156  %puts = call i32 @puts(ptr @str)157  ret i32 1158 159L.B0000:                                          ; preds = %L.entry160  %2 = load i16, ptr %value.addr, align 2161  %3 = icmp eq i16 %2, 234162  br i1 %3, label %L.B0001, label %L.B0005163 164L.B0005:                                          ; preds = %L.B0000165  %puts1 = call i32 @puts(ptr @str.1)166  ret i32 1167 168L.B0001:                                          ; preds = %L.B0000169  %puts2 = call i32 @puts(ptr @str.2)170  ret i32 0171}172 173; Function Attrs: nounwind174declare i32 @puts(ptr nocapture readonly) #0175