brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.0 KiB · 287b81d Raw
181 lines · plain
1; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s2; RUN: verify-uselistorder %s3 4; CHECK: @global = external global ptr5@global = external global ptr6 7; CHECK: @global_const_gep = global ptr getelementptr (i47, ptr @global, i64 1)8@global_const_gep = global ptr getelementptr (i47, ptr @global, i64 1)9 10; CHECK: @fptr1 = external global ptr11; CHECK: @fptr2 = external global ptr addrspace(1)12; CHECK: @fptr3 = external global ptr addrspace(2)13@fptr1 = external global ptr14@fptr2 = external global ptr addrspace(1)15@fptr3 = external global ptr addrspace(2)16 17; CHECK: @ifunc = ifunc void (), ptr @f18@ifunc = ifunc void (), ptr @f19 20; CHECK: define ptr @f(ptr %a) {21; CHECK:     ret ptr %a22define ptr @f(ptr %a) {23    ret ptr %a24}25 26; CHECK: define ptr @g(ptr addrspace(2) %a) {27; CHECK:     %b = addrspacecast ptr addrspace(2) %a to ptr28; CHECK:     ret ptr %b29define ptr @g(ptr addrspace(2) %a) {30    %b = addrspacecast ptr addrspace(2) %a to ptr addrspace(0)31    ret ptr addrspace(0) %b32}33 34; CHECK: define ptr addrspace(2) @g2(ptr %a) {35; CHECK:     %b = addrspacecast ptr %a to ptr addrspace(2)36; CHECK:     ret ptr addrspace(2) %b37define ptr addrspace(2) @g2(ptr addrspace(0) %a) {38    %b = addrspacecast ptr addrspace(0) %a to ptr addrspace(2)39    ret ptr addrspace(2) %b40}41 42; CHECK: define i32 @load(ptr %a)43; CHECK:     %i = load i32, ptr %a44; CHECK:     ret i32 %i45define i32 @load(ptr %a) {46    %i = load i32, ptr %a47    ret i32 %i48}49 50; CHECK: define void @store(ptr %a, i32 %i)51; CHECK:     store i32 %i, ptr %a52; CHECK:     ret void53define void @store(ptr %a, i32 %i) {54    store i32 %i, ptr %a55    ret void56}57 58; CHECK: define ptr @gep(ptr %a)59; CHECK:     %res = getelementptr i8, ptr %a, i32 260; CHECK:     ret ptr %res61define ptr @gep(ptr %a) {62  %res = getelementptr i8, ptr %a, i32 263  ret ptr %res64}65 66; CHECK: define <2 x ptr> @gep_vec1(ptr %a)67; CHECK:     %res = getelementptr i8, ptr %a, <2 x i32> <i32 1, i32 2>68; CHECK:     ret <2 x ptr> %res69define <2 x ptr> @gep_vec1(ptr %a) {70  %res = getelementptr i8, ptr %a, <2 x i32> <i32 1, i32 2>71  ret <2 x ptr> %res72}73 74; CHECK: define <2 x ptr> @gep_vec2(<2 x ptr> %a)75; CHECK:     %res = getelementptr i8, <2 x ptr> %a, i32 276; CHECK:     ret <2 x ptr> %res77define <2 x ptr> @gep_vec2(<2 x ptr> %a) {78  %res = getelementptr i8, <2 x ptr> %a, i32 279  ret <2 x ptr> %res80}81 82; CHECK: define ptr @gep_constexpr(ptr %a)83; CHECK:     ret ptr getelementptr (i16, ptr null, i32 3)84define ptr @gep_constexpr(ptr %a) {85  ret ptr getelementptr (i16, ptr null, i32 3)86}87 88; CHECK: define <2 x ptr> @gep_constexpr_vec1(ptr %a)89; CHECK:     ret <2 x ptr> getelementptr (i16, ptr null, <2 x i32> <i32 3, i32 4>)90define <2 x ptr> @gep_constexpr_vec1(ptr %a) {91  ret <2 x ptr> getelementptr (i16, ptr null, <2 x i32> <i32 3, i32 4>)92}93 94; CHECK: define <2 x ptr> @gep_constexpr_vec2(<2 x ptr> %a)95; CHECK:     ret <2 x ptr> getelementptr (i16, <2 x ptr> zeroinitializer, <2 x i32> splat (i32 3))96define <2 x ptr> @gep_constexpr_vec2(<2 x ptr> %a) {97  ret <2 x ptr> getelementptr (i16, <2 x ptr> zeroinitializer, i32 3)98}99 100; CHECK: define void @cmpxchg(ptr %p, i32 %a, i32 %b)101; CHECK:     %val_success = cmpxchg ptr %p, i32 %a, i32 %b acq_rel monotonic102; CHECK:     ret void103define void @cmpxchg(ptr %p, i32 %a, i32 %b) {104    %val_success = cmpxchg ptr %p, i32 %a, i32 %b acq_rel monotonic105    ret void106}107 108; CHECK: define void @cmpxchg_ptr(ptr %p, ptr %a, ptr %b)109; CHECK:     %val_success = cmpxchg ptr %p, ptr %a, ptr %b acq_rel monotonic110; CHECK:     ret void111define void @cmpxchg_ptr(ptr %p, ptr %a, ptr %b) {112    %val_success = cmpxchg ptr %p, ptr %a, ptr %b acq_rel monotonic113    ret void114}115 116; CHECK: define void @atomicrmw(ptr %a, i32 %i)117; CHECK:     %b = atomicrmw add ptr %a, i32 %i acquire118; CHECK:     ret void119define void @atomicrmw(ptr %a, i32 %i) {120    %b = atomicrmw add ptr %a, i32 %i acquire121    ret void122}123 124; CHECK: define void @atomicrmw_ptr(ptr %a, ptr %b)125; CHECK:     %c = atomicrmw xchg ptr %a, ptr %b acquire126; CHECK:     ret void127define void @atomicrmw_ptr(ptr %a, ptr %b) {128    %c = atomicrmw xchg ptr %a, ptr %b acquire129    ret void130}131 132; CHECK: define void @call(ptr %p)133; CHECK:     call void %p()134; CHECK:     ret void135define void @call(ptr %p) {136  call void %p()137  ret void138}139 140; CHECK: define void @call_arg(ptr %p, i32 %a)141; CHECK:     call void %p(i32 %a)142; CHECK:     ret void143define void @call_arg(ptr %p, i32 %a) {144  call void %p(i32 %a)145  ret void146}147 148; CHECK: define void @invoke(ptr %p) personality ptr @personality {149; CHECK:   invoke void %p()150; CHECK:     to label %continue unwind label %cleanup151declare void @personality()152define void @invoke(ptr %p) personality ptr @personality {153  invoke void %p()154    to label %continue unwind label %cleanup155 156continue:157  ret void158 159cleanup:160  landingpad {}161    cleanup162  ret void163}164 165; CHECK: define void @byval(ptr byval({ i32, i32 }) %0)166define void @byval(ptr byval({ i32, i32 }) %0) {167  ret void168}169 170; CHECK: define void @call_unnamed_fn() {171; CHECK:  call void @0()172define void @call_unnamed_fn() {173  call void @0()174  ret void175}176 177; CHECK: define void @0() {178define void @0() {179  ret void180}181