1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names < %s \ 3; RUN: -mtriple=powerpc64le-unknown-linux-gnu | FileCheck %s 4 5@res = dso_local local_unnamed_addr global i32 0, align 4 6@res2 = dso_local local_unnamed_addr global i32 0, align 4 7 8define void @foo(i32 signext %var1) { 9; CHECK-LABEL: foo: 10; CHECK: # %bb.0: # %entry 11; CHECK-NEXT: xori r3, r3, 1 12; CHECK-NEXT: addis r4, r2, res@toc@ha 13; CHECK-NEXT: cntlzw r3, r3 14; CHECK-NEXT: rlwinm r3, r3, 14, 0, 12 15; CHECK-NEXT: stw r3, res@toc@l(r4) 16; CHECK-NEXT: blr 17entry: 18 %cmp = icmp eq i32 %var1, 1 19 %conv = zext i1 %cmp to i32 20 %shl = shl nuw nsw i32 %conv, 19 21 store i32 %shl, i32* @res, align 4 22 ret void 23} 24 25define void @foo_multiple_use(i32 signext %var1) { 26; CHECK-LABEL: foo_multiple_use: 27; CHECK: # %bb.0: # %entry 28; CHECK-NEXT: xori r3, r3, 1 29; CHECK-NEXT: addis r4, r2, res2@toc@ha 30; CHECK-NEXT: addis r6, r2, res@toc@ha 31; CHECK-NEXT: cntlzw r3, r3 32; CHECK-NEXT: srwi r5, r3, 5 33; CHECK-NEXT: rlwinm r3, r3, 14, 0, 12 34; CHECK-NEXT: stw r5, res2@toc@l(r4) 35; CHECK-NEXT: stw r3, res@toc@l(r6) 36; CHECK-NEXT: blr 37entry: 38 %cmp = icmp eq i32 %var1, 1 39 %conv = zext i1 %cmp to i32 40 store i32 %conv, i32* @res2, align 4 41 %shl = shl nuw nsw i32 %conv, 19 42 store i32 %shl, i32* @res, align 4 43 ret void 44} 45