146396534SKai Luo; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 246396534SKai Luo; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -mtriple=powerpc \ 346396534SKai Luo; RUN: -mcpu=pwr7 < %s | FileCheck %s 446396534SKai Luo; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -mtriple=powerpc \ 546396534SKai Luo; RUN: -mcpu=pwr8 < %s | FileCheck %s --check-prefix=PWR8 646396534SKai Luo 746396534SKai Luodefine void @foo(ptr %a, i32 %x) { 846396534SKai Luo; CHECK-LABEL: foo: 946396534SKai Luo; CHECK: # %bb.0: 1046396534SKai Luo; CHECK-NEXT: rlwinm r5, r3, 3, 27, 28 11eee024bfSKai Luo; CHECK-NEXT: extsb r4, r4 12*69b056d5SQiu Chaofan; CHECK-NEXT: li r6, 255 1346396534SKai Luo; CHECK-NEXT: sync 1446396534SKai Luo; CHECK-NEXT: rlwinm r3, r3, 0, 0, 29 15*69b056d5SQiu Chaofan; CHECK-NEXT: xori r5, r5, 24 1646396534SKai Luo; CHECK-NEXT: slw r7, r4, r5 1746396534SKai Luo; CHECK-NEXT: slw r6, r6, r5 1846396534SKai Luo; CHECK-NEXT: and r7, r7, r6 1946396534SKai Luo; CHECK-NEXT: .LBB0_1: 2046396534SKai Luo; CHECK-NEXT: lwarx r8, 0, r3 2146396534SKai Luo; CHECK-NEXT: and r9, r8, r6 2246396534SKai Luo; CHECK-NEXT: srw r9, r9, r5 2346396534SKai Luo; CHECK-NEXT: extsb r9, r9 2446396534SKai Luo; CHECK-NEXT: cmpw r9, r4 2546396534SKai Luo; CHECK-NEXT: bgt cr0, .LBB0_3 2646396534SKai Luo; CHECK-NEXT: # %bb.2: 2746396534SKai Luo; CHECK-NEXT: andc r8, r8, r6 2846396534SKai Luo; CHECK-NEXT: or r8, r7, r8 2946396534SKai Luo; CHECK-NEXT: stwcx. r8, 0, r3 3046396534SKai Luo; CHECK-NEXT: bne cr0, .LBB0_1 3146396534SKai Luo; CHECK-NEXT: .LBB0_3: 3246396534SKai Luo; CHECK-NEXT: lwsync 3346396534SKai Luo; CHECK-NEXT: blr 3446396534SKai Luo; 3546396534SKai Luo; PWR8-LABEL: foo: 3646396534SKai Luo; PWR8: # %bb.0: 3746396534SKai Luo; PWR8-NEXT: sync 38b922a362SQiu Chaofan; PWR8-NEXT: extsb r4, r4 3946396534SKai Luo; PWR8-NEXT: .LBB0_1: 4046396534SKai Luo; PWR8-NEXT: lbarx r5, 0, r3 4146396534SKai Luo; PWR8-NEXT: extsb r5, r5 4246396534SKai Luo; PWR8-NEXT: cmpw r5, r4 4346396534SKai Luo; PWR8-NEXT: bgt cr0, .LBB0_3 4446396534SKai Luo; PWR8-NEXT: # %bb.2: 4546396534SKai Luo; PWR8-NEXT: stbcx. r4, 0, r3 4646396534SKai Luo; PWR8-NEXT: bne cr0, .LBB0_1 4746396534SKai Luo; PWR8-NEXT: .LBB0_3: 4846396534SKai Luo; PWR8-NEXT: lwsync 4946396534SKai Luo; PWR8-NEXT: blr 5046396534SKai Luo %val = trunc i32 %x to i8 5146396534SKai Luo %1 = atomicrmw max ptr %a, i8 %val seq_cst 5246396534SKai Luo ret void 5346396534SKai Luo} 54