brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.3 KiB · 5e11e01 Raw
361 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32-- | FileCheck %s \3; RUN:   -check-prefix=PPC324; RUN: llc -verify-machineinstrs < %s -mcpu=ppc -mtriple=powerpc64 | FileCheck %s \5; RUN:   -check-prefix=PPC646; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64le -mattr=-direct-move \7; RUN:   | FileCheck %s -check-prefix=PPC64LE8; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32-- -mcpu=pwr9 \9; RUN:   | FileCheck %s -check-prefix=P9_3210; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64le -mcpu=pwr9 \11; RUN:   | FileCheck %s -check-prefix=P912; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64le | FileCheck %s \13; RUN:   -check-prefix=DM14 15define i32 @foo() #0 {16; PPC32-LABEL: foo:17; PPC32:       # %bb.0: # %entry18; PPC32-NEXT:    stwu 1, -32(1)19; PPC32-NEXT:    mffs 020; PPC32-NEXT:    stfd 0, 16(1)21; PPC32-NEXT:    lwz 3, 20(1)22; PPC32-NEXT:    clrlwi 4, 3, 3023; PPC32-NEXT:    not 3, 324; PPC32-NEXT:    rlwinm 3, 3, 31, 31, 3125; PPC32-NEXT:    xor 3, 4, 326; PPC32-NEXT:    stw 3, 24(1)27; PPC32-NEXT:    stw 3, 28(1)28; PPC32-NEXT:    addi 1, 1, 3229; PPC32-NEXT:    blr30;31; PPC64-LABEL: foo:32; PPC64:       # %bb.0: # %entry33; PPC64-NEXT:    mffs 034; PPC64-NEXT:    stfd 0, -16(1)35; PPC64-NEXT:    lwz 3, -12(1)36; PPC64-NEXT:    clrlwi 4, 3, 3037; PPC64-NEXT:    not 3, 338; PPC64-NEXT:    rlwinm 3, 3, 31, 31, 3139; PPC64-NEXT:    xor 3, 4, 340; PPC64-NEXT:    stw 3, -8(1)41; PPC64-NEXT:    stw 3, -4(1)42; PPC64-NEXT:    blr43;44; PPC64LE-LABEL: foo:45; PPC64LE:       # %bb.0: # %entry46; PPC64LE-NEXT:    mffs 047; PPC64LE-NEXT:    stfd 0, -16(1)48; PPC64LE-NEXT:    lwz 3, -16(1)49; PPC64LE-NEXT:    clrlwi 4, 3, 3050; PPC64LE-NEXT:    not 3, 351; PPC64LE-NEXT:    rlwinm 3, 3, 31, 31, 3152; PPC64LE-NEXT:    xor 3, 4, 353; PPC64LE-NEXT:    stw 3, -8(1)54; PPC64LE-NEXT:    stw 3, -4(1)55; PPC64LE-NEXT:    blr56;57; P9_32-LABEL: foo:58; P9_32:       # %bb.0: # %entry59; P9_32-NEXT:    stwu 1, -32(1)60; P9_32-NEXT:    mffs 061; P9_32-NEXT:    stfd 0, 16(1)62; P9_32-NEXT:    lwz 3, 20(1)63; P9_32-NEXT:    clrlwi 4, 3, 3064; P9_32-NEXT:    not 3, 365; P9_32-NEXT:    rlwinm 3, 3, 31, 31, 3166; P9_32-NEXT:    xor 3, 4, 367; P9_32-NEXT:    stw 3, 24(1)68; P9_32-NEXT:    stw 3, 28(1)69; P9_32-NEXT:    addi 1, 1, 3270; P9_32-NEXT:    blr71;72; P9-LABEL: foo:73; P9:       # %bb.0: # %entry74; P9-NEXT:    mffs 075; P9-NEXT:    mffprd 3, 076; P9-NEXT:    clrlwi 4, 3, 3077; P9-NEXT:    not 3, 378; P9-NEXT:    rlwinm 3, 3, 31, 31, 3179; P9-NEXT:    xor 3, 4, 380; P9-NEXT:    stw 3, -8(1)81; P9-NEXT:    stw 3, -4(1)82; P9-NEXT:    blr83;84; DM-LABEL: foo:85; DM:       # %bb.0: # %entry86; DM-NEXT:    mffs 087; DM-NEXT:    mffprd 3, 088; DM-NEXT:    clrlwi 4, 3, 3089; DM-NEXT:    not 3, 390; DM-NEXT:    rlwinm 3, 3, 31, 31, 3191; DM-NEXT:    xor 3, 4, 392; DM-NEXT:    stw 3, -8(1)93; DM-NEXT:    stw 3, -4(1)94; DM-NEXT:    blr95entry:96	%retval = alloca i32		; <ptr> [#uses=2]97	%tmp = alloca i32		; <ptr> [#uses=2]98	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]99	%tmp1 = call i32 @llvm.get.rounding( )		; <i32> [#uses=1]100	store i32 %tmp1, ptr %tmp, align 4101	%tmp2 = load i32, ptr %tmp, align 4		; <i32> [#uses=1]102	store i32 %tmp2, ptr %retval, align 4103	br label %return104 105return:		; preds = %entry106	%retval3 = load i32, ptr %retval		; <i32> [#uses=1]107	ret i32 %retval3108}109 110define void @setrnd_tozero() #0 {111; PPC32-LABEL: setrnd_tozero:112; PPC32:       # %bb.0: # %entry113; PPC32-NEXT:    mtfsb0 30114; PPC32-NEXT:    mtfsb1 31115; PPC32-NEXT:    blr116;117; PPC64-LABEL: setrnd_tozero:118; PPC64:       # %bb.0: # %entry119; PPC64-NEXT:    mtfsb0 30120; PPC64-NEXT:    mtfsb1 31121; PPC64-NEXT:    blr122;123; PPC64LE-LABEL: setrnd_tozero:124; PPC64LE:       # %bb.0: # %entry125; PPC64LE-NEXT:    mtfsb0 30126; PPC64LE-NEXT:    mtfsb1 31127; PPC64LE-NEXT:    blr128;129; P9_32-LABEL: setrnd_tozero:130; P9_32:       # %bb.0: # %entry131; P9_32-NEXT:    mffscrni 0, 1132; P9_32-NEXT:    blr133;134; P9-LABEL: setrnd_tozero:135; P9:       # %bb.0: # %entry136; P9-NEXT:    mffscrni 0, 1137; P9-NEXT:    blr138;139; DM-LABEL: setrnd_tozero:140; DM:       # %bb.0: # %entry141; DM-NEXT:    mtfsb0 30142; DM-NEXT:    mtfsb1 31143; DM-NEXT:    blr144entry:145  call void @llvm.set.rounding(i32 0)146  ret void147}148 149define void @setrnd_tonearest_tieeven() #0 {150; PPC32-LABEL: setrnd_tonearest_tieeven:151; PPC32:       # %bb.0: # %entry152; PPC32-NEXT:    mtfsb0 30153; PPC32-NEXT:    mtfsb0 31154; PPC32-NEXT:    blr155;156; PPC64-LABEL: setrnd_tonearest_tieeven:157; PPC64:       # %bb.0: # %entry158; PPC64-NEXT:    mtfsb0 30159; PPC64-NEXT:    mtfsb0 31160; PPC64-NEXT:    blr161;162; PPC64LE-LABEL: setrnd_tonearest_tieeven:163; PPC64LE:       # %bb.0: # %entry164; PPC64LE-NEXT:    mtfsb0 30165; PPC64LE-NEXT:    mtfsb0 31166; PPC64LE-NEXT:    blr167;168; P9_32-LABEL: setrnd_tonearest_tieeven:169; P9_32:       # %bb.0: # %entry170; P9_32-NEXT:    mffscrni 0, 0171; P9_32-NEXT:    blr172;173; P9-LABEL: setrnd_tonearest_tieeven:174; P9:       # %bb.0: # %entry175; P9-NEXT:    mffscrni 0, 0176; P9-NEXT:    blr177;178; DM-LABEL: setrnd_tonearest_tieeven:179; DM:       # %bb.0: # %entry180; DM-NEXT:    mtfsb0 30181; DM-NEXT:    mtfsb0 31182; DM-NEXT:    blr183entry:184  call void @llvm.set.rounding(i32 1)185  ret void186}187 188define void @setrnd_toposinf() #0 {189; PPC32-LABEL: setrnd_toposinf:190; PPC32:       # %bb.0: # %entry191; PPC32-NEXT:    mtfsb1 30192; PPC32-NEXT:    mtfsb0 31193; PPC32-NEXT:    blr194;195; PPC64-LABEL: setrnd_toposinf:196; PPC64:       # %bb.0: # %entry197; PPC64-NEXT:    mtfsb1 30198; PPC64-NEXT:    mtfsb0 31199; PPC64-NEXT:    blr200;201; PPC64LE-LABEL: setrnd_toposinf:202; PPC64LE:       # %bb.0: # %entry203; PPC64LE-NEXT:    mtfsb1 30204; PPC64LE-NEXT:    mtfsb0 31205; PPC64LE-NEXT:    blr206;207; P9_32-LABEL: setrnd_toposinf:208; P9_32:       # %bb.0: # %entry209; P9_32-NEXT:    mffscrni 0, 2210; P9_32-NEXT:    blr211;212; P9-LABEL: setrnd_toposinf:213; P9:       # %bb.0: # %entry214; P9-NEXT:    mffscrni 0, 2215; P9-NEXT:    blr216;217; DM-LABEL: setrnd_toposinf:218; DM:       # %bb.0: # %entry219; DM-NEXT:    mtfsb1 30220; DM-NEXT:    mtfsb0 31221; DM-NEXT:    blr222entry:223  call void @llvm.set.rounding(i32 2)224  ret void225}226 227define void @setrnd_toneginf() #0 {228; PPC32-LABEL: setrnd_toneginf:229; PPC32:       # %bb.0: # %entry230; PPC32-NEXT:    mtfsb1 30231; PPC32-NEXT:    mtfsb1 31232; PPC32-NEXT:    blr233;234; PPC64-LABEL: setrnd_toneginf:235; PPC64:       # %bb.0: # %entry236; PPC64-NEXT:    mtfsb1 30237; PPC64-NEXT:    mtfsb1 31238; PPC64-NEXT:    blr239;240; PPC64LE-LABEL: setrnd_toneginf:241; PPC64LE:       # %bb.0: # %entry242; PPC64LE-NEXT:    mtfsb1 30243; PPC64LE-NEXT:    mtfsb1 31244; PPC64LE-NEXT:    blr245;246; P9_32-LABEL: setrnd_toneginf:247; P9_32:       # %bb.0: # %entry248; P9_32-NEXT:    mffscrni 0, 3249; P9_32-NEXT:    blr250;251; P9-LABEL: setrnd_toneginf:252; P9:       # %bb.0: # %entry253; P9-NEXT:    mffscrni 0, 3254; P9-NEXT:    blr255;256; DM-LABEL: setrnd_toneginf:257; DM:       # %bb.0: # %entry258; DM-NEXT:    mtfsb1 30259; DM-NEXT:    mtfsb1 31260; DM-NEXT:    blr261entry:262  call void @llvm.set.rounding(i32 3)263  ret void264}265 266define void @setrnd_var(i32 %x) #0 {267; PPC32-LABEL: setrnd_var:268; PPC32:       # %bb.0: # %entry269; PPC32-NEXT:    stwu 1, -16(1)270; PPC32-NEXT:    mffs 0271; PPC32-NEXT:    stfd 0, 8(1)272; PPC32-NEXT:    clrlwi 4, 3, 30273; PPC32-NEXT:    lwz 5, 12(1)274; PPC32-NEXT:    rlwinm 3, 3, 31, 31, 31275; PPC32-NEXT:    xor 3, 3, 4276; PPC32-NEXT:    xori 3, 3, 1277; PPC32-NEXT:    rlwimi 5, 3, 0, 30, 31278; PPC32-NEXT:    stw 5, 12(1)279; PPC32-NEXT:    lfd 0, 8(1)280; PPC32-NEXT:    mtfsf 255, 0281; PPC32-NEXT:    addi 1, 1, 16282; PPC32-NEXT:    blr283;284; PPC64-LABEL: setrnd_var:285; PPC64:       # %bb.0: # %entry286; PPC64-NEXT:    mffs 0287; PPC64-NEXT:    stfd 0, -16(1)288; PPC64-NEXT:    clrlwi 4, 3, 30289; PPC64-NEXT:    rlwinm 3, 3, 31, 31, 31290; PPC64-NEXT:    ld 5, -16(1)291; PPC64-NEXT:    xor 3, 3, 4292; PPC64-NEXT:    xori 3, 3, 1293; PPC64-NEXT:    clrldi 3, 3, 32294; PPC64-NEXT:    rldimi 5, 3, 0, 62295; PPC64-NEXT:    std 5, -8(1)296; PPC64-NEXT:    lfd 0, -8(1)297; PPC64-NEXT:    mtfsf 255, 0298; PPC64-NEXT:    blr299;300; PPC64LE-LABEL: setrnd_var:301; PPC64LE:       # %bb.0: # %entry302; PPC64LE-NEXT:    mffs 0303; PPC64LE-NEXT:    clrlwi 4, 3, 30304; PPC64LE-NEXT:    rlwinm 3, 3, 31, 31, 31305; PPC64LE-NEXT:    stfd 0, -16(1)306; PPC64LE-NEXT:    xor 3, 3, 4307; PPC64LE-NEXT:    ld 4, -16(1)308; PPC64LE-NEXT:    xori 3, 3, 1309; PPC64LE-NEXT:    clrldi 3, 3, 32310; PPC64LE-NEXT:    rldimi 4, 3, 0, 62311; PPC64LE-NEXT:    std 4, -8(1)312; PPC64LE-NEXT:    lfd 0, -8(1)313; PPC64LE-NEXT:    mtfsf 255, 0314; PPC64LE-NEXT:    blr315;316; P9_32-LABEL: setrnd_var:317; P9_32:       # %bb.0: # %entry318; P9_32-NEXT:    stwu 1, -16(1)319; P9_32-NEXT:    clrlwi 4, 3, 30320; P9_32-NEXT:    rlwinm 3, 3, 31, 31, 31321; P9_32-NEXT:    xor 3, 3, 4322; P9_32-NEXT:    xori 3, 3, 1323; P9_32-NEXT:    stw 3, 12(1)324; P9_32-NEXT:    lfd 0, 8(1)325; P9_32-NEXT:    mffscrn 0, 0326; P9_32-NEXT:    addi 1, 1, 16327; P9_32-NEXT:    blr328;329; P9-LABEL: setrnd_var:330; P9:       # %bb.0: # %entry331; P9-NEXT:    clrlwi 4, 3, 30332; P9-NEXT:    rlwinm 3, 3, 31, 31, 31333; P9-NEXT:    xor 3, 3, 4334; P9-NEXT:    xori 3, 3, 1335; P9-NEXT:    mtfprd 0, 3336; P9-NEXT:    mffscrn 0, 0337; P9-NEXT:    blr338;339; DM-LABEL: setrnd_var:340; DM:       # %bb.0: # %entry341; DM-NEXT:    clrlwi 4, 3, 30342; DM-NEXT:    rlwinm 3, 3, 31, 31, 31343; DM-NEXT:    xor 3, 3, 4344; DM-NEXT:    xori 3, 3, 1345; DM-NEXT:    clrldi 3, 3, 32346; DM-NEXT:    mffs 0347; DM-NEXT:    mffprd 4, 0348; DM-NEXT:    rldimi 4, 3, 0, 62349; DM-NEXT:    mtfprd 0, 4350; DM-NEXT:    mtfsf 255, 0351; DM-NEXT:    blr352entry:353  call void @llvm.set.rounding(i32 %x)354  ret void355}356 357declare i32 @llvm.get.rounding() #0358declare void @llvm.set.rounding(i32) #0359 360attributes #0 = { nounwind }361