brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.3 KiB · fae63b2 Raw
179 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names < %s -mtriple=powerpc64-linux-gnu -mcpu=pwr8 -mattr=+vsx | FileCheck %s -check-prefix=CHECK-VSX3; RUN: llc -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names < %s -mtriple=powerpc64-linux-gnu -mcpu=pwr8 -mattr=-vsx | FileCheck %s -check-prefixes=CHECK-NOVSX,CHECK-NOVSX-BE4; RUN: llc -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names < %s -mtriple=powerpc64le-linux-gnu -mcpu=pwr8 -mattr=+vsx | FileCheck %s -check-prefix=CHECK-VSX5; RUN: llc -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names < %s -mtriple=powerpc64le-linux-gnu -mcpu=pwr8 -mattr=-vsx | FileCheck %s -check-prefixes=CHECK-NOVSX,CHECK-NOVSX-LE6 7define <4 x float> @test1(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x float> %d) {8; CHECK-VSX-LABEL: test1:9; CHECK-VSX:       # %bb.0: # %entry10; CHECK-VSX-NEXT:    xvcmpeqsp vs0, v4, v511; CHECK-VSX-NEXT:    xxsel v2, v3, v2, vs012; CHECK-VSX-NEXT:    blr13;14; CHECK-NOVSX-LABEL: test1:15; CHECK-NOVSX:       # %bb.0: # %entry16; CHECK-NOVSX-NEXT:    vcmpeqfp v4, v4, v517; CHECK-NOVSX-NEXT:    vsel v2, v3, v2, v418; CHECK-NOVSX-NEXT:    blr19entry:20  %m = fcmp oeq <4 x float> %c, %d21  %v = select <4 x i1> %m, <4 x float> %a, <4 x float> %b22  ret <4 x float> %v23}24 25define <2 x double> @test2(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x double> %d) {26; CHECK-VSX-LABEL: test2:27; CHECK-VSX:       # %bb.0: # %entry28; CHECK-VSX-NEXT:    xvcmpeqdp v4, v4, v529; CHECK-VSX-NEXT:    xxsel v2, v3, v2, v430; CHECK-VSX-NEXT:    blr31;32; CHECK-NOVSX-LABEL: test2:33; CHECK-NOVSX:       # %bb.0: # %entry34; CHECK-NOVSX-NEXT:    fcmpu cr0, f5, f735; CHECK-NOVSX-NEXT:    beq cr0, .LBB1_236; CHECK-NOVSX-NEXT:  # %bb.1: # %entry37; CHECK-NOVSX-NEXT:    fmr f1, f338; CHECK-NOVSX-NEXT:  .LBB1_2: # %entry39; CHECK-NOVSX-NEXT:    fcmpu cr0, f6, f840; CHECK-NOVSX-NEXT:    beqlr cr041; CHECK-NOVSX-NEXT:  # %bb.3: # %entry42; CHECK-NOVSX-NEXT:    fmr f2, f443; CHECK-NOVSX-NEXT:    blr44entry:45  %m = fcmp oeq <2 x double> %c, %d46  %v = select <2 x i1> %m, <2 x double> %a, <2 x double> %b47  ret <2 x double> %v48}49 50define <16 x i8> @test3(<16 x i8> %a, <16 x i8> %b, <16 x i8> %c, <16 x i8> %d) {51; CHECK-VSX-LABEL: test3:52; CHECK-VSX:       # %bb.0: # %entry53; CHECK-VSX-NEXT:    vcmpequb v4, v4, v554; CHECK-VSX-NEXT:    xxsel v2, v3, v2, v455; CHECK-VSX-NEXT:    blr56;57; CHECK-NOVSX-LABEL: test3:58; CHECK-NOVSX:       # %bb.0: # %entry59; CHECK-NOVSX-NEXT:    vcmpequb v4, v4, v560; CHECK-NOVSX-NEXT:    vsel v2, v3, v2, v461; CHECK-NOVSX-NEXT:    blr62entry:63  %m = icmp eq <16 x i8> %c, %d64  %v = select <16 x i1> %m, <16 x i8> %a, <16 x i8> %b65  ret <16 x i8> %v66}67 68define <8 x i16> @test4(<8 x i16> %a, <8 x i16> %b, <8 x i16> %c, <8 x i16> %d) {69; CHECK-VSX-LABEL: test4:70; CHECK-VSX:       # %bb.0: # %entry71; CHECK-VSX-NEXT:    vcmpequh v4, v4, v572; CHECK-VSX-NEXT:    xxsel v2, v3, v2, v473; CHECK-VSX-NEXT:    blr74;75; CHECK-NOVSX-LABEL: test4:76; CHECK-NOVSX:       # %bb.0: # %entry77; CHECK-NOVSX-NEXT:    vcmpequh v4, v4, v578; CHECK-NOVSX-NEXT:    vsel v2, v3, v2, v479; CHECK-NOVSX-NEXT:    blr80entry:81  %m = icmp eq <8 x i16> %c, %d82  %v = select <8 x i1> %m, <8 x i16> %a, <8 x i16> %b83  ret <8 x i16> %v84}85 86define <4 x i32> @test5(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c, <4 x i32> %d) {87; CHECK-VSX-LABEL: test5:88; CHECK-VSX:       # %bb.0: # %entry89; CHECK-VSX-NEXT:    vcmpequw v4, v4, v590; CHECK-VSX-NEXT:    xxsel v2, v3, v2, v491; CHECK-VSX-NEXT:    blr92;93; CHECK-NOVSX-LABEL: test5:94; CHECK-NOVSX:       # %bb.0: # %entry95; CHECK-NOVSX-NEXT:    vcmpequw v4, v4, v596; CHECK-NOVSX-NEXT:    vsel v2, v3, v2, v497; CHECK-NOVSX-NEXT:    blr98entry:99  %m = icmp eq <4 x i32> %c, %d100  %v = select <4 x i1> %m, <4 x i32> %a, <4 x i32> %b101  ret <4 x i32> %v102}103 104define <2 x i64> @test6(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c, <2 x i64> %d) {105; CHECK-VSX-LABEL: test6:106; CHECK-VSX:       # %bb.0: # %entry107; CHECK-VSX-NEXT:    vcmpequd v4, v4, v5108; CHECK-VSX-NEXT:    xxsel v2, v3, v2, v4109; CHECK-VSX-NEXT:    blr110;111; CHECK-NOVSX-LABEL: test6:112; CHECK-NOVSX:       # %bb.0: # %entry113; CHECK-NOVSX-NEXT:    vcmpequd v4, v4, v5114; CHECK-NOVSX-NEXT:    vsel v2, v3, v2, v4115; CHECK-NOVSX-NEXT:    blr116entry:117  %m = icmp eq <2 x i64> %c, %d118  %v = select <2 x i1> %m, <2 x i64> %a, <2 x i64> %b119  ret <2 x i64> %v120}121 122define <1 x i128> @test7(<1 x i128> %a, <1 x i128> %b, <1 x i128> %c, <1 x i128> %d) {123; CHECK-VSX-LABEL: test7:124; CHECK-VSX:       # %bb.0: # %entry125; CHECK-VSX-NEXT:    mfvsrd r3, v5126; CHECK-VSX-NEXT:    mfvsrd r4, v4127; CHECK-VSX-NEXT:    xor r3, r4, r3128; CHECK-VSX-NEXT:    xxswapd vs0, v5129; CHECK-VSX-NEXT:    xxswapd vs1, v4130; CHECK-VSX-NEXT:    mffprd r4, f0131; CHECK-VSX-NEXT:    mffprd r5, f1132; CHECK-VSX-NEXT:    xor r4, r5, r4133; CHECK-VSX-NEXT:    or. r3, r4, r3134; CHECK-VSX-NEXT:    bclr 12, eq, 0135; CHECK-VSX-NEXT:  # %bb.1: # %entry136; CHECK-VSX-NEXT:    vmr v2, v3137; CHECK-VSX-NEXT:    blr138;139; CHECK-NOVSX-BE-LABEL: test7:140; CHECK-NOVSX-BE:       # %bb.0: # %entry141; CHECK-NOVSX-BE-NEXT:    addi r3, r1, -16142; CHECK-NOVSX-BE-NEXT:    stvx v5, 0, r3143; CHECK-NOVSX-BE-NEXT:    addi r3, r1, -32144; CHECK-NOVSX-BE-NEXT:    stvx v4, 0, r3145; CHECK-NOVSX-BE-NEXT:    ld r3, -16(r1)146; CHECK-NOVSX-BE-NEXT:    ld r4, -32(r1)147; CHECK-NOVSX-BE-NEXT:    ld r5, -24(r1)148; CHECK-NOVSX-BE-NEXT:    xor r3, r4, r3149; CHECK-NOVSX-BE-NEXT:    ld r4, -8(r1)150; CHECK-NOVSX-BE-NEXT:    xor r4, r5, r4151; CHECK-NOVSX-BE-NEXT:    or. r3, r4, r3152; CHECK-NOVSX-BE-NEXT:    bclr 12, eq, 0153; CHECK-NOVSX-BE-NEXT:  # %bb.1: # %entry154; CHECK-NOVSX-BE-NEXT:    vmr v2, v3155; CHECK-NOVSX-BE-NEXT:    blr156;157; CHECK-NOVSX-LE-LABEL: test7:158; CHECK-NOVSX-LE:       # %bb.0: # %entry159; CHECK-NOVSX-LE-NEXT:    addi r3, r1, -16160; CHECK-NOVSX-LE-NEXT:    stvx v5, 0, r3161; CHECK-NOVSX-LE-NEXT:    addi r3, r1, -32162; CHECK-NOVSX-LE-NEXT:    stvx v4, 0, r3163; CHECK-NOVSX-LE-NEXT:    ld r3, -8(r1)164; CHECK-NOVSX-LE-NEXT:    ld r4, -24(r1)165; CHECK-NOVSX-LE-NEXT:    ld r5, -32(r1)166; CHECK-NOVSX-LE-NEXT:    xor r3, r4, r3167; CHECK-NOVSX-LE-NEXT:    ld r4, -16(r1)168; CHECK-NOVSX-LE-NEXT:    xor r4, r5, r4169; CHECK-NOVSX-LE-NEXT:    or. r3, r4, r3170; CHECK-NOVSX-LE-NEXT:    bclr 12, eq, 0171; CHECK-NOVSX-LE-NEXT:  # %bb.1: # %entry172; CHECK-NOVSX-LE-NEXT:    vmr v2, v3173; CHECK-NOVSX-LE-NEXT:    blr174entry:175  %m = icmp eq <1 x i128> %c, %d176  %v = select <1 x i1> %m, <1 x i128> %a, <1 x i128> %b177  ret <1 x i128> %v178}179