brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · 88fae7a Raw
152 lines · plain
1; RUN: llc < %s -mtriple=nvptx64 -mcpu=sm_30 | FileCheck %s --check-prefixes=ALL,SM302; RUN: llc < %s -mtriple=nvptx64 -mcpu=sm_60 | FileCheck %s --check-prefixes=ALL,SM603; RUN: %if ptxas %{ llc < %s -mtriple=nvptx64 -mcpu=sm_30 | %ptxas-verify %}4; RUN: %if ptxas-sm_60 %{ llc < %s -mtriple=nvptx64 -mcpu=sm_60 | %ptxas-verify -arch=sm_60 %}5 6; CHECK-LABEL: fadd_double7define void @fadd_double(ptr %0, double %1) {8entry:9  ; SM30: atom.cas.b6410  ; SM60: atom.add.f6411  %2 = atomicrmw fadd ptr %0, double %1 monotonic, align 812  ret void13}14 15; CHECK-LABEL: fadd_float16define void @fadd_float(ptr %0, float %1) {17entry:18  ; ALL: atom.add.f3219  %2 = atomicrmw fadd ptr %0, float %1 monotonic, align 420  ret void21}22 23; CHECK-LABEL: bitwise_i3224define void @bitwise_i32(ptr %0, i32 %1) {25entry:26  ; ALL: atom.and.b3227  %2 = atomicrmw and ptr %0, i32 %1 monotonic, align 428  ; ALL: atom.or.b3229  %3 = atomicrmw or ptr %0, i32 %1 monotonic, align 430  ; ALL: atom.xor.b3231  %4 = atomicrmw xor ptr %0, i32 %1 monotonic, align 432  ; ALL: atom.exch.b3233  %5 = atomicrmw xchg ptr %0, i32 %1 monotonic, align 434  ret void35}36 37; CHECK-LABEL: bitwise_i6438define void @bitwise_i64(ptr %0, i64 %1) {39entry:40  ; SM30: atom.cas.b6441  ; SM60: atom.and.b6442  %2 = atomicrmw and ptr %0, i64 %1 monotonic, align 843  ; SM30: atom.cas.b6444  ; SM60: atom.or.b6445  %3 = atomicrmw or ptr %0, i64 %1 monotonic, align 846  ; SM30: atom.cas.b6447  ; SM60: atom.xor.b6448  %4 = atomicrmw xor ptr %0, i64 %1 monotonic, align 849  ; SM30: atom.cas.b6450  ; SM60: atom.exch.b6451  %5 = atomicrmw xchg ptr %0, i64 %1 monotonic, align 852  ret void53}54 55; CHECK-LABEL: minmax_i3256define void @minmax_i32(ptr %0, i32 %1) {57entry:58  ; ALL: atom.min.s3259  %2 = atomicrmw min ptr %0, i32 %1 monotonic, align 460  ; ALL: atom.max.s3261  %3 = atomicrmw max ptr %0, i32 %1 monotonic, align 462  ; ALL: atom.min.u3263  %4 = atomicrmw umin ptr %0, i32 %1 monotonic, align 464  ; ALL: atom.max.u3265  %5 = atomicrmw umax ptr %0, i32 %1 monotonic, align 466  ret void67}68 69; CHECK-LABEL: minmax_i6470define void @minmax_i64(ptr %0, i64 %1) {71entry:72  ; SM30: atom.cas.b6473  ; SM60: atom.min.s6474  %2 = atomicrmw min ptr %0, i64 %1 monotonic, align 875  ; SM30: atom.cas.b6476  ; SM60: atom.max.s6477  %3 = atomicrmw max ptr %0, i64 %1 monotonic, align 878  ; SM30: atom.cas.b6479  ; SM60: atom.min.u6480  %4 = atomicrmw umin ptr %0, i64 %1 monotonic, align 881  ; SM30: atom.cas.b6482  ; SM60: atom.max.u6483  %5 = atomicrmw umax ptr %0, i64 %1 monotonic, align 884  ret void85}86 87; CHECK-LABEL: bitwise_i888define void @bitwise_i8(ptr %0, i8 %1) {89entry:90  ; ALL: atom.and.b3291  %2 = atomicrmw and ptr %0, i8 %1 monotonic, align 192  ; ALL: atom.or.b3293  %3 = atomicrmw or ptr %0, i8 %1 monotonic, align 194  ; ALL: atom.xor.b3295  %4 = atomicrmw xor ptr %0, i8 %1 monotonic, align 196  ; SM30: atom.cas.b3297  ; SM60: atom.sys.cas.b3298  %5 = atomicrmw xchg ptr %0, i8 %1 monotonic, align 199  ret void100}101 102; CHECK-LABEL: minmax_i8103define void @minmax_i8(ptr %0, i8 %1) {104entry:105  ; SM30: atom.cas.b32106  ; SM60: atom.sys.cas.b32107  %2 = atomicrmw min ptr %0, i8 %1 monotonic, align 1108  ; SM30: atom.cas.b32109  ; SM60: atom.sys.cas.b32110  %3 = atomicrmw max ptr %0, i8 %1 monotonic, align 1111  ; SM30: atom.cas.b32112  ; SM60: atom.sys.cas.b32113  %4 = atomicrmw umin ptr %0, i8 %1 monotonic, align 1114  ; SM30: atom.cas.b32115  ; SM60: atom.sys.cas.b32116  %5 = atomicrmw umax ptr %0, i8 %1 monotonic, align 1117  ret void118}119 120; CHECK-LABEL: bitwise_i16121define void @bitwise_i16(ptr %0, i16 %1) {122entry:123  ; ALL: atom.and.b32124  %2 = atomicrmw and ptr %0, i16 %1 monotonic, align 2125  ; ALL: atom.or.b32126  %3 = atomicrmw or ptr %0, i16 %1 monotonic, align 2127  ; ALL: atom.xor.b32128  %4 = atomicrmw xor ptr %0, i16 %1 monotonic, align 2129  ; SM30: atom.cas.b32130  ; SM60: atom.sys.cas.b32131  %5 = atomicrmw xchg ptr %0, i16 %1 monotonic, align 2132  ret void133}134 135; CHECK-LABEL: minmax_i16136define void @minmax_i16(ptr %0, i16 %1) {137entry:138  ; SM30: atom.cas.b32139  ; SM60: atom.sys.cas.b32140  %2 = atomicrmw min ptr %0, i16 %1 monotonic, align 2141  ; SM30: atom.cas.b32142  ; SM60: atom.sys.cas.b32143  %3 = atomicrmw max ptr %0, i16 %1 monotonic, align 2144  ; SM30: atom.cas.b32145  ; SM60: atom.sys.cas.b32146  %4 = atomicrmw umin ptr %0, i16 %1 monotonic, align 2147  ; SM30: atom.cas.b32148  ; SM60: atom.sys.cas.b32149  %5 = atomicrmw umax ptr %0, i16 %1 monotonic, align 2150  ret void151}152