brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.5 KiB · 811ed1b Raw
210 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \3; RUN:   -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK4; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-aix \5; RUN:   -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-AIX6 7define dso_local zeroext i8 @test1(ptr noundef %addr, i8 noundef zeroext %newval) local_unnamed_addr #0 {8; CHECK-LABEL: test1:9; CHECK:       # %bb.0: # %entry10; CHECK-NEXT:    stbcx. 4, 0, 311; CHECK-NEXT:    bne 0, .LBB0_212; CHECK-NEXT:  # %bb.1: # %if.then13; CHECK-NEXT:    mflr 014; CHECK-NEXT:    stdu 1, -32(1)15; CHECK-NEXT:    std 0, 48(1)16; CHECK-NEXT:    .cfi_def_cfa_offset 3217; CHECK-NEXT:    .cfi_offset lr, 1618; CHECK-NEXT:    bl dummy19; CHECK-NEXT:    nop20; CHECK-NEXT:    addi 1, 1, 3221; CHECK-NEXT:    ld 0, 16(1)22; CHECK-NEXT:    mtlr 023; CHECK-NEXT:  .LBB0_2: # %if.end24; CHECK-NEXT:    li 3, 5525; CHECK-NEXT:    blr26;27; CHECK-AIX-LABEL: test1:28; CHECK-AIX:       # %bb.0: # %entry29; CHECK-AIX-NEXT:    stbcx. 4, 0, 330; CHECK-AIX-NEXT:    bne 0, L..BB0_231; CHECK-AIX-NEXT:  # %bb.1: # %if.then32; CHECK-AIX-NEXT:    mflr 033; CHECK-AIX-NEXT:    stdu 1, -112(1)34; CHECK-AIX-NEXT:    std 0, 128(1)35; CHECK-AIX-NEXT:    bl .dummy[PR]36; CHECK-AIX-NEXT:    nop37; CHECK-AIX-NEXT:    addi 1, 1, 11238; CHECK-AIX-NEXT:    ld 0, 16(1)39; CHECK-AIX-NEXT:    mtlr 040; CHECK-AIX-NEXT:  L..BB0_2: # %if.end41; CHECK-AIX-NEXT:    li 3, 5542; CHECK-AIX-NEXT:    blr43entry:44  %conv = zext i8 %newval to i3245  %0 = tail call i32 @llvm.ppc.stbcx(ptr %addr, i32 %conv)46  %tobool.not = icmp eq i32 %0, 047  br i1 %tobool.not, label %if.end, label %if.then48 49if.then:                                          ; preds = %entry50  tail call void @dummy() #351  br label %if.end52 53if.end:                                           ; preds = %if.then, %entry54  ret i8 5555}56 57define dso_local signext i16 @test2(ptr noundef %addr, i16 noundef signext %newval) local_unnamed_addr #0 {58; CHECK-LABEL: test2:59; CHECK:       # %bb.0: # %entry60; CHECK-NEXT:    sthcx. 4, 0, 361; CHECK-NEXT:    bne 0, .LBB1_262; CHECK-NEXT:  # %bb.1: # %if.then63; CHECK-NEXT:    mflr 064; CHECK-NEXT:    stdu 1, -32(1)65; CHECK-NEXT:    std 0, 48(1)66; CHECK-NEXT:    .cfi_def_cfa_offset 3267; CHECK-NEXT:    .cfi_offset lr, 1668; CHECK-NEXT:    bl dummy69; CHECK-NEXT:    nop70; CHECK-NEXT:    addi 1, 1, 3271; CHECK-NEXT:    ld 0, 16(1)72; CHECK-NEXT:    mtlr 073; CHECK-NEXT:  .LBB1_2: # %if.end74; CHECK-NEXT:    li 3, 5575; CHECK-NEXT:    blr76;77; CHECK-AIX-LABEL: test2:78; CHECK-AIX:       # %bb.0: # %entry79; CHECK-AIX-NEXT:    sthcx. 4, 0, 380; CHECK-AIX-NEXT:    bne 0, L..BB1_281; CHECK-AIX-NEXT:  # %bb.1: # %if.then82; CHECK-AIX-NEXT:    mflr 083; CHECK-AIX-NEXT:    stdu 1, -112(1)84; CHECK-AIX-NEXT:    std 0, 128(1)85; CHECK-AIX-NEXT:    bl .dummy[PR]86; CHECK-AIX-NEXT:    nop87; CHECK-AIX-NEXT:    addi 1, 1, 11288; CHECK-AIX-NEXT:    ld 0, 16(1)89; CHECK-AIX-NEXT:    mtlr 090; CHECK-AIX-NEXT:  L..BB1_2: # %if.end91; CHECK-AIX-NEXT:    li 3, 5592; CHECK-AIX-NEXT:    blr93entry:94  %0 = sext i16 %newval to i3295  %1 = tail call i32 @llvm.ppc.sthcx(ptr %addr, i32 %0)96  %tobool.not = icmp eq i32 %1, 097  br i1 %tobool.not, label %if.end, label %if.then98 99if.then:                                          ; preds = %entry100  tail call void @dummy() #3101  br label %if.end102 103if.end:                                           ; preds = %if.then, %entry104  ret i16 55105}106 107define dso_local signext i32 @test3(ptr noundef %addr, i32 noundef signext %newval) local_unnamed_addr #0 {108; CHECK-LABEL: test3:109; CHECK:       # %bb.0: # %entry110; CHECK-NEXT:    stwcx. 4, 0, 3111; CHECK-NEXT:    bne 0, .LBB2_2112; CHECK-NEXT:  # %bb.1: # %if.then113; CHECK-NEXT:    mflr 0114; CHECK-NEXT:    stdu 1, -32(1)115; CHECK-NEXT:    std 0, 48(1)116; CHECK-NEXT:    .cfi_def_cfa_offset 32117; CHECK-NEXT:    .cfi_offset lr, 16118; CHECK-NEXT:    bl dummy119; CHECK-NEXT:    nop120; CHECK-NEXT:    addi 1, 1, 32121; CHECK-NEXT:    ld 0, 16(1)122; CHECK-NEXT:    mtlr 0123; CHECK-NEXT:  .LBB2_2: # %if.end124; CHECK-NEXT:    li 3, 55125; CHECK-NEXT:    blr126;127; CHECK-AIX-LABEL: test3:128; CHECK-AIX:       # %bb.0: # %entry129; CHECK-AIX-NEXT:    stwcx. 4, 0, 3130; CHECK-AIX-NEXT:    bne 0, L..BB2_2131; CHECK-AIX-NEXT:  # %bb.1: # %if.then132; CHECK-AIX-NEXT:    mflr 0133; CHECK-AIX-NEXT:    stdu 1, -112(1)134; CHECK-AIX-NEXT:    std 0, 128(1)135; CHECK-AIX-NEXT:    bl .dummy[PR]136; CHECK-AIX-NEXT:    nop137; CHECK-AIX-NEXT:    addi 1, 1, 112138; CHECK-AIX-NEXT:    ld 0, 16(1)139; CHECK-AIX-NEXT:    mtlr 0140; CHECK-AIX-NEXT:  L..BB2_2: # %if.end141; CHECK-AIX-NEXT:    li 3, 55142; CHECK-AIX-NEXT:    blr143entry:144  %0 = tail call i32 @llvm.ppc.stwcx(ptr %addr, i32 %newval)145  %tobool.not = icmp eq i32 %0, 0146  br i1 %tobool.not, label %if.end, label %if.then147 148if.then:                                          ; preds = %entry149  tail call void @dummy() #3150  br label %if.end151 152if.end:                                           ; preds = %if.then, %entry153  ret i32 55154}155 156define dso_local i64 @test4(ptr noundef %addr, i64 noundef %newval) local_unnamed_addr #0 {157; CHECK-LABEL: test4:158; CHECK:       # %bb.0: # %entry159; CHECK-NEXT:    stdcx. 4, 0, 3160; CHECK-NEXT:    bne 0, .LBB3_2161; CHECK-NEXT:  # %bb.1: # %if.then162; CHECK-NEXT:    mflr 0163; CHECK-NEXT:    stdu 1, -32(1)164; CHECK-NEXT:    std 0, 48(1)165; CHECK-NEXT:    .cfi_def_cfa_offset 32166; CHECK-NEXT:    .cfi_offset lr, 16167; CHECK-NEXT:    bl dummy168; CHECK-NEXT:    nop169; CHECK-NEXT:    addi 1, 1, 32170; CHECK-NEXT:    ld 0, 16(1)171; CHECK-NEXT:    mtlr 0172; CHECK-NEXT:  .LBB3_2: # %if.end173; CHECK-NEXT:    li 3, 55174; CHECK-NEXT:    blr175;176; CHECK-AIX-LABEL: test4:177; CHECK-AIX:       # %bb.0: # %entry178; CHECK-AIX-NEXT:    stdcx. 4, 0, 3179; CHECK-AIX-NEXT:    bne 0, L..BB3_2180; CHECK-AIX-NEXT:  # %bb.1: # %if.then181; CHECK-AIX-NEXT:    mflr 0182; CHECK-AIX-NEXT:    stdu 1, -112(1)183; CHECK-AIX-NEXT:    std 0, 128(1)184; CHECK-AIX-NEXT:    bl .dummy[PR]185; CHECK-AIX-NEXT:    nop186; CHECK-AIX-NEXT:    addi 1, 1, 112187; CHECK-AIX-NEXT:    ld 0, 16(1)188; CHECK-AIX-NEXT:    mtlr 0189; CHECK-AIX-NEXT:  L..BB3_2: # %if.end190; CHECK-AIX-NEXT:    li 3, 55191; CHECK-AIX-NEXT:    blr192entry:193  %0 = tail call i32 @llvm.ppc.stdcx(ptr %addr, i64 %newval)194  %tobool.not = icmp eq i32 %0, 0195  br i1 %tobool.not, label %if.end, label %if.then196 197if.then:                                          ; preds = %entry198  tail call void @dummy() #3199  br label %if.end200 201if.end:                                           ; preds = %if.then, %entry202  ret i64 55203}204 205declare i32 @llvm.ppc.stbcx(ptr, i32) #1206declare i32 @llvm.ppc.sthcx(ptr, i32) #1207declare i32 @llvm.ppc.stwcx(ptr, i32) #1208declare i32 @llvm.ppc.stdcx(ptr, i64) #1209declare void @dummy(...) local_unnamed_addr #2210