99 lines · plain
1; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \2; RUN: -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-64B3; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \4; RUN: -mcpu=pwr7 < %s | FileCheck %s --check-prefix=CHECK-64B5; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-aix \6; RUN: -mcpu=pwr7 < %s | FileCheck %s --check-prefix=CHECK-32B7; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-aix \8; RUN: -mcpu=pwr7 < %s | FileCheck %s --check-prefix=CHECK-64B9 10@us = external global i16, align 211@us_addr = external global ptr, align 812@ui = external global i32, align 413@ui_addr = external global ptr, align 814 15define dso_local void @test_builtin_ppc_store2r() {16; CHECK-64B-LABEL: test_builtin_ppc_store2r:17; CHECK-64B: sthbrx 3, 0, 418; CHECK-64B-NEXT: blr19 20; CHECK-32B-LABEL: test_builtin_ppc_store2r:21; CHECK-32B: sthbrx 3, 0, 422; CHECK-32B-NEXT: blr23entry:24 %0 = load i16, ptr @us, align 225 %conv = zext i16 %0 to i3226 %1 = load ptr, ptr @us_addr, align 827 call void @llvm.ppc.store2r(i32 %conv, ptr %1)28 ret void29}30 31declare void @llvm.ppc.store2r(i32, ptr)32 33define dso_local void @test_builtin_ppc_store4r() {34; CHECK-64B-LABEL: test_builtin_ppc_store4r:35; CHECK-64B: stwbrx 3, 0, 436; CHECK-64B-NEXT: blr37 38; CHECK-32B-LABEL: test_builtin_ppc_store4r:39; CHECK-32B: stwbrx 3, 0, 440; CHECK-32B-NEXT: blr41entry:42 %0 = load i32, ptr @ui, align 443 %1 = load ptr, ptr @ui_addr, align 844 call void @llvm.ppc.store4r(i32 %0, ptr %1)45 ret void46}47 48declare void @llvm.ppc.store4r(i32, ptr)49 50define dso_local zeroext i16 @test_builtin_ppc_load2r() {51; CHECK-64B-LABEL: test_builtin_ppc_load2r:52; CHECK-64B: lhbrx 3, 0, 353; CHECK-64B-NEXT: blr54 55; CHECK-32B-LABEL: test_builtin_ppc_load2r:56; CHECK-32B: lhbrx 3, 0, 357; CHECK-32B-NEXT: blr58entry:59 %0 = load ptr, ptr @us_addr, align 860 %1 = call i32 @llvm.ppc.load2r(ptr %0)61 %conv = trunc i32 %1 to i1662 ret i16 %conv63}64 65define dso_local signext i16 @test_builtin_ppc_load2r_signext() {66; CHECK-64B-LABEL: test_builtin_ppc_load2r_signext:67; CHECK-64B: lhbrx 3, 0, 368; CHECK-64B-NEXT: extsh 3, 369; CHECK-64B-NEXT: blr70 71; CHECK-32B-LABEL: test_builtin_ppc_load2r_signext:72; CHECK-32B: lhbrx 3, 0, 373; CHECK-32B-NEXT: extsh 3, 374; CHECK-32B-NEXT: blr75entry:76 %0 = load ptr, ptr @us_addr, align 877 %1 = call i32 @llvm.ppc.load2r(ptr %0)78 %conv = trunc i32 %1 to i1679 ret i16 %conv80}81 82declare i32 @llvm.ppc.load2r(ptr)83 84define dso_local zeroext i32 @test_builtin_ppc_load4r() {85; CHECK-64B-LABEL: test_builtin_ppc_load4r:86; CHECK-64B: lwbrx 3, 0, 387; CHECK-64B-NEXT: blr88 89; CHECK-32B-LABEL: test_builtin_ppc_load4r:90; CHECK-32B: lwbrx 3, 0, 391; CHECK-32B-NEXT: blr92entry:93 %0 = load ptr, ptr @ui_addr, align 894 %1 = call i32 @llvm.ppc.load4r(ptr %0)95 ret i32 %196}97 98declare i32 @llvm.ppc.load4r(ptr)99