brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 76708d5 Raw
67 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64le-unknown-linux-gnu | FileCheck %s3; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu | FileCheck %s4; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-ibm-aix-xcoff | FileCheck %s5 6define i64 @ori_test_1(i64 %a) {7; CHECK-LABEL: ori_test_1:8; CHECK:       # %bb.0: # %entry9; CHECK-NEXT:    li 3, -110; CHECK-NEXT:    blr11entry:12  %or = or i64 %a, 18446744073709551615 ; 0xffffffffffffffff13  ret i64 %or14}15 16define i64 @ori_test_2(i64 %a) {17; CHECK-LABEL: ori_test_2:18; CHECK:       # %bb.0: # %entry19; CHECK-NEXT:    li 4, -120; CHECK-NEXT:    rldimi 3, 4, 29, 1521; CHECK-NEXT:    blr22entry:23  %or = or i64 %a, 562949416550400 ; 0x1ffffe000000024  ret i64 %or25}26 27define i64 @ori_test_3(i64 %a) {28; CHECK-LABEL: ori_test_3:29; CHECK:       # %bb.0: # %entry30; CHECK-NEXT:    li 4, -131; CHECK-NEXT:    rldimi 3, 4, 3, 2832; CHECK-NEXT:    blr33entry:34  %or = or i64 %a, 68719476728 ; 0xffffffff835  ret i64 %or36}37 38define i64 @ori_test_4(i64 %a) {39; CHECK-LABEL: ori_test_4:40; CHECK:       # %bb.0: # %entry41; CHECK-NEXT:    lis 4, -3264042; CHECK-NEXT:    ori 4, 4, 3290343; CHECK-NEXT:    rldicl 4, 4, 13, 1944; CHECK-NEXT:    or 3, 3, 445; CHECK-NEXT:    blr46entry:47  %or = or i64 %a, 17661175070719 ; 0x10101010ffff48  ret i64 %or49}50 51; Don't exploit rldimi if operand has multiple uses52define i64 @test_test_5(i64 %a, i64 %b) {53; CHECK-LABEL: test_test_5:54; CHECK:       # %bb.0: # %entry55; CHECK-NEXT:    li 5, 156; CHECK-NEXT:    rldic 5, 5, 32, 3157; CHECK-NEXT:    or 5, 3, 558; CHECK-NEXT:    add 4, 5, 459; CHECK-NEXT:    sub 3, 3, 460; CHECK-NEXT:    blr61entry:62  %or = or i64 %a, 429496729663  %add = add i64 %or, %b64  %div = sub i64 %a, %add65  ret i64 %div66}67