brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.3 KiB · 7afead1 Raw
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