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