brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.2 KiB · 6616a1e Raw
237 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mcpu=pwr10 -mtriple=powerpc64le-unknown-unknown \3; RUN:   -ppc-asm-full-reg-names --ppc-vsr-nums-as-vr < %s | FileCheck %s4 5; (eqv A, (and B, C)) 2256define dso_local <2 x i64> @eqvA_andB_C(<2 x i64> %A, <2 x i64> %B, <2 x i64> %C) local_unnamed_addr #0 {7; CHECK-LABEL: eqvA_andB_C:8; CHECK:       # %bb.0: # %entry9; CHECK-NEXT:    xxeval v2, v2, v3, v4, 22510; CHECK-NEXT:    blr11entry:12  %and = and <2 x i64> %B, %C13  %xor = xor <2 x i64> %A, %and14  %neg = xor <2 x i64> %xor, <i64 -1, i64 -1>15  ret <2 x i64> %neg16}17 18; (eqv A, (or B, C)) 13519define dso_local <4 x i32> @eqvA_orB_C(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 {20; CHECK-LABEL: eqvA_orB_C:21; CHECK:       # %bb.0: # %entry22; CHECK-NEXT:    xxeval v2, v2, v3, v4, 13523; CHECK-NEXT:    blr24entry:25  %or = or <4 x i32> %B, %C26  %xor = xor <4 x i32> %A, %or27  %neg = xor <4 x i32> %xor, <i32 -1, i32 -1, i32 -1, i32 -1>28  ret <4 x i32> %neg29}30 31; (eqv A, B, C) 15032define dso_local <8 x i16> @eqvA_B_C(<8 x i16> %A, <8 x i16> %B, <8 x i16> %C) local_unnamed_addr #0 {33; CHECK-LABEL: eqvA_B_C:34; CHECK:       # %bb.0: # %entry35; CHECK-NEXT:    xxeval v2, v2, v3, v4, 15036; CHECK-NEXT:    blr37entry:38  %and = and <8 x i16> %B, %C39  %and1 = and <8 x i16> %A, %and40  %or = or <8 x i16> %B, %C41  %or1 = or <8 x i16> %A, %or42  %neg = xor <8 x i16> %or1, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>43  %or2 = or <8 x i16> %and1, %neg44  ret <8 x i16> %or245}46 47; (nor A, (and B, C)) 22448define dso_local <16 x i8> @norA_andB_C(<16 x i8> %A, <16 x i8> %B, <16 x i8> %C) local_unnamed_addr #0 {49; CHECK-LABEL: norA_andB_C:50; CHECK:       # %bb.0: # %entry51; CHECK-NEXT:    xxeval v2, v2, v3, v4, 22452; CHECK-NEXT:    blr53entry:54  %and = and <16 x i8> %B, %C55  %or = or <16 x i8> %A, %and56  %neg = xor <16 x i8> %or, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>57  ret <16 x i8> %neg58}59 60; (nor A, (eqv B, C)) 9661define dso_local <4 x i32> @norA_eqvB_C(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 {62; CHECK-LABEL: norA_eqvB_C:63; CHECK:       # %bb.0: # %entry64; CHECK-NEXT:    xxeval v2, v2, v3, v4, 9665; CHECK-NEXT:    blr66entry:67  %neg = xor <4 x i32> %A, <i32 -1, i32 -1, i32 -1, i32 -1>68  %xor = xor <4 x i32> %B, %C69  %and = and <4 x i32> %neg, %xor70  ret <4 x i32> %and71}72 73; (nor A, (nand B, C)) 1674define dso_local <4 x i32> @norA_nandB_C(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 {75; CHECK-LABEL: norA_nandB_C:76; CHECK:       # %bb.0: # %entry77; CHECK-NEXT:    xxeval v2, v2, v3, v4, 1678; CHECK-NEXT:    blr79entry:80  %neg = xor <4 x i32> %A, <i32 -1, i32 -1, i32 -1, i32 -1>81  %and = and <4 x i32> %B, %C82  %and1 = and <4 x i32> %neg, %and83  ret <4 x i32> %and184}85 86; (nor A, (nor B, C)) 11287define dso_local <4 x i32> @norA_norB_C(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 {88; CHECK-LABEL: norA_norB_C:89; CHECK:       # %bb.0: # %entry90; CHECK-NEXT:    xxeval v2, v2, v3, v4, 11291; CHECK-NEXT:    blr92entry:93  %neg = xor <4 x i32> %A, <i32 -1, i32 -1, i32 -1, i32 -1>94  %or = or <4 x i32> %B, %C95  %and = and <4 x i32> %neg, %or96  ret <4 x i32> %and97}98 99; (nor A, (xor B, C)) 144100define dso_local <4 x i32> @norA_xorB_C(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 {101; CHECK-LABEL: norA_xorB_C:102; CHECK:       # %bb.0: # %entry103; CHECK-NEXT:    xxeval v2, v2, v3, v4, 144104; CHECK-NEXT:    blr105entry:106  %xor = xor <4 x i32> %B, %C107  %or = or <4 x i32> %A, %xor108  %neg = xor <4 x i32> %or, <i32 -1, i32 -1, i32 -1, i32 -1>109  ret <4 x i32> %neg110}111 112; (nor A, B, C) 128113define dso_local <4 x i32> @norA_B_C(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 {114; CHECK-LABEL: norA_B_C:115; CHECK:       # %bb.0: # %entry116; CHECK-NEXT:    xxeval v2, v2, v3, v4, 128117; CHECK-NEXT:    blr118entry:119  %or = or <4 x i32> %B, %C120  %or1 = or <4 x i32> %A, %or121  %neg = xor <4 x i32> %or1, <i32 -1, i32 -1, i32 -1, i32 -1>122  ret <4 x i32> %neg123}124 125; (or A, (and B, C)) 31126define dso_local <4 x i32> @orA_andB_C(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 {127; CHECK-LABEL: orA_andB_C:128; CHECK:       # %bb.0: # %entry129; CHECK-NEXT:    xxeval v2, v2, v3, v4, 31130; CHECK-NEXT:    blr131entry:132  %and = and <4 x i32> %B, %C133  %or = or <4 x i32> %A, %and134  ret <4 x i32> %or135}136 137; (or A, (eqv B, C)) 159138define dso_local <4 x i32> @orA_eqvB_C(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 {139; CHECK-LABEL: orA_eqvB_C:140; CHECK:       # %bb.0: # %entry141; CHECK-NEXT:    xxeval v2, v2, v3, v4, 159142; CHECK-NEXT:    blr143entry:144  %xor = xor <4 x i32> %B, %C145  %neg = xor <4 x i32> %xor, <i32 -1, i32 -1, i32 -1, i32 -1>146  %or = or <4 x i32> %A, %neg147  ret <4 x i32> %or148}149 150; (or A, (nand B, C)) 239151define dso_local <4 x i32> @orA_nandB_C(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 {152; CHECK-LABEL: orA_nandB_C:153; CHECK:       # %bb.0: # %entry154; CHECK-NEXT:    xxeval v2, v2, v3, v4, 239155; CHECK-NEXT:    blr156entry:157  %and = and <4 x i32> %B, %C158  %neg = xor <4 x i32> %and, <i32 -1, i32 -1, i32 -1, i32 -1>159  %or = or <4 x i32> %A, %neg160  ret <4 x i32> %or161}162 163; (or A, (nor B, C)) 143164define dso_local <4 x i32> @orA_norB_C(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 {165; CHECK-LABEL: orA_norB_C:166; CHECK:       # %bb.0: # %entry167; CHECK-NEXT:    xxeval v2, v2, v3, v4, 143168; CHECK-NEXT:    blr169entry:170  %or = or <4 x i32> %B, %C171  %neg = xor <4 x i32> %or, <i32 -1, i32 -1, i32 -1, i32 -1>172  %or1 = or <4 x i32> %A, %neg173  ret <4 x i32> %or1174}175 176; (or A, (xor B, C)) 111177define dso_local <4 x i32> @orA_xorB_C(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 {178; CHECK-LABEL: orA_xorB_C:179; CHECK:       # %bb.0: # %entry180; CHECK-NEXT:    xxeval v2, v2, v3, v4, 111181; CHECK-NEXT:    blr182entry:183  %xor = xor <4 x i32> %B, %C184  %or = or <4 x i32> %A, %xor185  ret <4 x i32> %or186}187 188; (or A, B, C) 127189define dso_local <4 x i32> @orA_B_C(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 {190; CHECK-LABEL: orA_B_C:191; CHECK:       # %bb.0: # %entry192; CHECK-NEXT:    xxeval v2, v2, v3, v4, 127193; CHECK-NEXT:    blr194entry:195  %or = or <4 x i32> %B, %C196  %or1 = or <4 x i32> %A, %or197  ret <4 x i32> %or1198}199 200; (xor A, (and B, C)) 30201define dso_local <4 x i32> @xorA_andB_C(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 {202; CHECK-LABEL: xorA_andB_C:203; CHECK:       # %bb.0: # %entry204; CHECK-NEXT:    xxeval v2, v2, v3, v4, 30205; CHECK-NEXT:    blr206entry:207  %and = and <4 x i32> %B, %C208  %xor = xor <4 x i32> %A, %and209  ret <4 x i32> %xor210}211 212; (xor A, (or B, C)) 120213define dso_local <4 x i32> @xorA_orB_C(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 {214; CHECK-LABEL: xorA_orB_C:215; CHECK:       # %bb.0: # %entry216; CHECK-NEXT:    xxeval v2, v2, v3, v4, 120217; CHECK-NEXT:    blr218entry:219  %or = or <4 x i32> %B, %C220  %xor = xor <4 x i32> %A, %or221  ret <4 x i32> %xor222}223 224; (xor A, B, C) 105225define dso_local <4 x i32> @xorA_B_C(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 {226; CHECK-LABEL: xorA_B_C:227; CHECK:       # %bb.0: # %entry228; CHECK-NEXT:    xxeval v2, v2, v3, v4, 105229; CHECK-NEXT:    blr230entry:231  %xor = xor <4 x i32> %B, %C232  %xor1 = xor <4 x i32> %A, %xor233  ret <4 x i32> %xor1234}235 236attributes #0 = { nounwind }237