172 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -verify-machineinstrs -mcpu=sm_50 | FileCheck %s3; RUN: %if ptxas %{ llc < %s -verify-machineinstrs -mcpu=sm_50 | %ptxas-verify %}4 5target triple = "nvptx64-nvidia-cuda"6 7@g = global i32 08 9define void @test_prmt_f4e() {10; CHECK-LABEL: test_prmt_f4e(11; CHECK: {12; CHECK-EMPTY:13; CHECK-EMPTY:14; CHECK-NEXT: // %bb.0:15; CHECK-NEXT: st.volatile.global.b32 [g], 50462976;16; CHECK-NEXT: st.volatile.global.b32 [g], 67305985;17; CHECK-NEXT: st.volatile.global.b32 [g], 84148994;18; CHECK-NEXT: st.volatile.global.b32 [g], 100992003;19; CHECK-NEXT: st.volatile.global.b32 [g], 50462976;20; CHECK-NEXT: ret;21 %v1 = call i32 @llvm.nvvm.prmt.f4e(i32 u0x03020100, i32 u0x07060504, i32 u0x0)22 store volatile i32 %v1, ptr @g23 %v2 = call i32 @llvm.nvvm.prmt.f4e(i32 u0x03020100, i32 u0x07060504, i32 u0x1)24 store volatile i32 %v2, ptr @g25 %v3 = call i32 @llvm.nvvm.prmt.f4e(i32 u0x03020100, i32 u0x07060504, i32 u0x2)26 store volatile i32 %v3, ptr @g27 %v4 = call i32 @llvm.nvvm.prmt.f4e(i32 u0x03020100, i32 u0x07060504, i32 u0x3)28 store volatile i32 %v4, ptr @g29 %v5 = call i32 @llvm.nvvm.prmt.f4e(i32 u0x03020100, i32 u0x07060504, i32 u0x4)30 store volatile i32 %v5, ptr @g31 ret void32}33 34define void @test_prmt_b4e() {35; CHECK-LABEL: test_prmt_b4e(36; CHECK: {37; CHECK-EMPTY:38; CHECK-EMPTY:39; CHECK-NEXT: // %bb.0:40; CHECK-NEXT: st.volatile.global.b32 [g], 84281088;41; CHECK-NEXT: st.volatile.global.b32 [g], 101122049;42; CHECK-NEXT: st.volatile.global.b32 [g], 117440770;43; CHECK-NEXT: st.volatile.global.b32 [g], 66051;44; CHECK-NEXT: st.volatile.global.b32 [g], 84281088;45; CHECK-NEXT: ret;46 %v1 = call i32 @llvm.nvvm.prmt.b4e(i32 u0x03020100, i32 u0x07060504, i32 u0x0)47 store volatile i32 %v1, ptr @g48 %v2 = call i32 @llvm.nvvm.prmt.b4e(i32 u0x03020100, i32 u0x07060504, i32 u0x1)49 store volatile i32 %v2, ptr @g50 %v3 = call i32 @llvm.nvvm.prmt.b4e(i32 u0x03020100, i32 u0x07060504, i32 u0x2)51 store volatile i32 %v3, ptr @g52 %v4 = call i32 @llvm.nvvm.prmt.b4e(i32 u0x03020100, i32 u0x07060504, i32 u0x3)53 store volatile i32 %v4, ptr @g54 %v5 = call i32 @llvm.nvvm.prmt.b4e(i32 u0x03020100, i32 u0x07060504, i32 u0x4)55 store volatile i32 %v5, ptr @g56 ret void57}58 59define void @test_prmt_ecl() {60; CHECK-LABEL: test_prmt_ecl(61; CHECK: {62; CHECK-EMPTY:63; CHECK-EMPTY:64; CHECK-NEXT: // %bb.0:65; CHECK-NEXT: st.volatile.global.b32 [g], 50462976;66; CHECK-NEXT: st.volatile.global.b32 [g], 50462977;67; CHECK-NEXT: st.volatile.global.b32 [g], 50463234;68; CHECK-NEXT: st.volatile.global.b32 [g], 50529027;69; CHECK-NEXT: ret;70 %v1 = call i32 @llvm.nvvm.prmt.ecl(i32 u0x03020100, i32 u0x0)71 store volatile i32 %v1, ptr @g72 %v2 = call i32 @llvm.nvvm.prmt.ecl(i32 u0x03020100, i32 u0x1)73 store volatile i32 %v2, ptr @g74 %v3 = call i32 @llvm.nvvm.prmt.ecl(i32 u0x03020100, i32 u0x2)75 store volatile i32 %v3, ptr @g76 %v4 = call i32 @llvm.nvvm.prmt.ecl(i32 u0x03020100, i32 u0x3)77 store volatile i32 %v4, ptr @g78 ret void79}80 81define void @test_prmt_ecr() {82; CHECK-LABEL: test_prmt_ecr(83; CHECK: {84; CHECK-EMPTY:85; CHECK-EMPTY:86; CHECK-NEXT: // %bb.0:87; CHECK-NEXT: st.volatile.global.b32 [g], 0;88; CHECK-NEXT: st.volatile.global.b32 [g], 16843008;89; CHECK-NEXT: st.volatile.global.b32 [g], 33685760;90; CHECK-NEXT: st.volatile.global.b32 [g], 50462976;91; CHECK-NEXT: ret;92 %v1 = call i32 @llvm.nvvm.prmt.ecr(i32 u0x03020100, i32 u0x0)93 store volatile i32 %v1, ptr @g94 %v2 = call i32 @llvm.nvvm.prmt.ecr(i32 u0x03020100, i32 u0x1)95 store volatile i32 %v2, ptr @g96 %v3 = call i32 @llvm.nvvm.prmt.ecr(i32 u0x03020100, i32 u0x2)97 store volatile i32 %v3, ptr @g98 %v4 = call i32 @llvm.nvvm.prmt.ecr(i32 u0x03020100, i32 u0x3)99 store volatile i32 %v4, ptr @g100 ret void101}102 103define void @test_prmt_rc8() {104; CHECK-LABEL: test_prmt_rc8(105; CHECK: {106; CHECK-EMPTY:107; CHECK-EMPTY:108; CHECK-NEXT: // %bb.0:109; CHECK-NEXT: st.volatile.global.b32 [g], 0;110; CHECK-NEXT: st.volatile.global.b32 [g], 16843009;111; CHECK-NEXT: st.volatile.global.b32 [g], 33686018;112; CHECK-NEXT: st.volatile.global.b32 [g], 50529027;113; CHECK-NEXT: st.volatile.global.b32 [g], 0;114; CHECK-NEXT: ret;115 %v1 = call i32 @llvm.nvvm.prmt.rc8(i32 u0x03020100, i32 u0x0)116 store volatile i32 %v1, ptr @g117 %v2 = call i32 @llvm.nvvm.prmt.rc8(i32 u0x03020100, i32 u0x1)118 store volatile i32 %v2, ptr @g119 %v3 = call i32 @llvm.nvvm.prmt.rc8(i32 u0x03020100, i32 u0x2)120 store volatile i32 %v3, ptr @g121 %v4 = call i32 @llvm.nvvm.prmt.rc8(i32 u0x03020100, i32 u0x3)122 store volatile i32 %v4, ptr @g123 %v5 = call i32 @llvm.nvvm.prmt.rc8(i32 u0x03020100, i32 u0x4)124 store volatile i32 %v5, ptr @g125 ret void126}127 128define void @test_prmt_rc16() {129; CHECK-LABEL: test_prmt_rc16(130; CHECK: {131; CHECK-EMPTY:132; CHECK-EMPTY:133; CHECK-NEXT: // %bb.0:134; CHECK-NEXT: st.volatile.global.b32 [g], 16777472;135; CHECK-NEXT: st.volatile.global.b32 [g], 50463490;136; CHECK-NEXT: st.volatile.global.b32 [g], 16777472;137; CHECK-NEXT: ret;138 %v1 = call i32 @llvm.nvvm.prmt.rc16(i32 u0x03020100, i32 u0x0)139 store volatile i32 %v1, ptr @g140 %v2 = call i32 @llvm.nvvm.prmt.rc16(i32 u0x03020100, i32 u0x1)141 store volatile i32 %v2, ptr @g142 %v3 = call i32 @llvm.nvvm.prmt.rc16(i32 u0x03020100, i32 u0x2)143 store volatile i32 %v3, ptr @g144 ret void145}146 147 148define void @test_prmt_basic() {149; CHECK-LABEL: test_prmt_basic(150; CHECK: {151; CHECK-EMPTY:152; CHECK-EMPTY:153; CHECK-NEXT: // %bb.0:154; CHECK-NEXT: st.volatile.global.b32 [g], 66051;155; CHECK-NEXT: st.volatile.global.b32 [g], 117507841;156; CHECK-NEXT: st.volatile.global.b32 [g], 1146447479;157; CHECK-NEXT: st.volatile.global.b32 [g], 0;158; CHECK-NEXT: st.volatile.global.b32 [g], -16711936;159; CHECK-NEXT: ret;160 %v1 = call i32 @llvm.nvvm.prmt(i32 u0x03020100, i32 u0x07060504, i32 u0x0123)161 store volatile i32 %v1, ptr @g162 %v2 = call i32 @llvm.nvvm.prmt(i32 u0x03020100, i32 u0x07060504, i32 u0x7171)163 store volatile i32 %v2, ptr @g164 %v3 = call i32 @llvm.nvvm.prmt(i32 u0x33221100, i32 u0x77665544, i32 u0x4567)165 store volatile i32 %v3, ptr @g166 %v4 = call i32 @llvm.nvvm.prmt(i32 u0x33221100, i32 u0x77665544, i32 u0xBA98)167 store volatile i32 %v4, ptr @g168 %v5 = call i32 @llvm.nvvm.prmt(i32 u0xF322F100, i32 u0x77665544, i32 u0xBA98)169 store volatile i32 %v5, ptr @g170 ret void171}172