@@ -598,33 +598,33 @@ __device__ void nvvm_atom(float *fp, float f, double *dfp, double df,
598598
599599// CHECK-LABEL: nvvm_ldg
600600__device__ void nvvm_ldg (const void * p ) {
601- // CHECK: call i8 @llvm.nvvm.ldg.global.i.i8.p0( ptr {{%[0-9]+}}, i32 1)
602- // CHECK: call i8 @llvm.nvvm.ldg.global.i.i8.p0( ptr {{%[0-9]+}}, i32 1)
603- // CHECK: call i8 @llvm.nvvm.ldg.global.i.i8.p0( ptr {{%[0-9]+}}, i32 1)
601+ // CHECK: load i8, ptr addrspace(1) {{%[0-9]+}}, align 1, !invariant.load
602+ // CHECK: load i8, ptr addrspace(1) {{%[0-9]+}}, align 1, !invariant.load
603+ // CHECK: load i8, ptr addrspace(1) {{%[0-9]+}}, align 1, !invariant.load
604604 __nvvm_ldg_c ((const char * )p );
605605 __nvvm_ldg_uc ((const unsigned char * )p );
606606 __nvvm_ldg_sc ((const signed char * )p );
607607
608- // CHECK: call i16 @llvm.nvvm.ldg.global.i.i16.p0( ptr {{%[0-9]+}}, i32 2)
609- // CHECK: call i16 @llvm.nvvm.ldg.global.i.i16.p0( ptr {{%[0-9]+}}, i32 2)
608+ // CHECK: load i16, ptr addrspace(1) {{%[0-9]+}}, align 2, !invariant.load
609+ // CHECK: load i16, ptr addrspace(1) {{%[0-9]+}}, align 2, !invariant.load
610610 __nvvm_ldg_s ((const short * )p );
611611 __nvvm_ldg_us ((const unsigned short * )p );
612612
613- // CHECK: call i32 @llvm.nvvm.ldg.global.i.i32.p0( ptr {{%[0-9]+}}, i32 4)
614- // CHECK: call i32 @llvm.nvvm.ldg.global.i.i32.p0( ptr {{%[0-9]+}}, i32 4)
613+ // CHECK: load i32, ptr addrspace(1) {{%[0-9]+}}, align 4, !invariant.load
614+ // CHECK: load i32, ptr addrspace(1) {{%[0-9]+}}, align 4, !invariant.load
615615 __nvvm_ldg_i ((const int * )p );
616616 __nvvm_ldg_ui ((const unsigned int * )p );
617617
618- // LP32: call i32 @llvm.nvvm.ldg.global.i.i32.p0( ptr {{%[0-9]+}}, i32 4)
619- // LP32: call i32 @llvm.nvvm.ldg.global.i.i32.p0( ptr {{%[0-9]+}}, i32 4)
620- // LP64: call i64 @llvm.nvvm.ldg.global.i.i64.p0( ptr {{%[0-9]+}}, i32 8)
621- // LP64: call i64 @llvm.nvvm.ldg.global.i.i64.p0( ptr {{%[0-9]+}}, i32 8)
618+ // LP32: load i32, ptr addrspace(1) {{%[0-9]+}}, align 4, !invariant.load
619+ // LP32: load i32, ptr addrspace(1) {{%[0-9]+}}, align 4, !invariant.load
620+ // LP64: load i64, ptr addrspace(1) {{%[0-9]+}}, align 8, !invariant.load
621+ // LP64: load i64, ptr addrspace(1) {{%[0-9]+}}, align 8, !invariant.load
622622 __nvvm_ldg_l ((const long * )p );
623623 __nvvm_ldg_ul ((const unsigned long * )p );
624624
625- // CHECK: call float @llvm.nvvm.ldg.global.f.f32.p0( ptr {{%[0-9]+}}, i32 4)
625+ // CHECK: load float, ptr addrspace(1) {{%[0-9]+}}, align 4, !invariant.load
626626 __nvvm_ldg_f ((const float * )p );
627- // CHECK: call double @llvm.nvvm.ldg.global.f.f64.p0( ptr {{%[0-9]+}}, i32 8)
627+ // CHECK: load double, ptr addrspace(1) {{%[0-9]+}}, align 8, !invariant.load
628628 __nvvm_ldg_d ((const double * )p );
629629
630630 // In practice, the pointers we pass to __ldg will be aligned as appropriate
@@ -636,79 +636,79 @@ __device__ void nvvm_ldg(const void *p) {
636636 // elements, its alignment is set to number of elements times the alignment of
637637 // its member: n*alignof(t)."
638638
639- // CHECK: call <2 x i8> @llvm.nvvm.ldg.global.i.v2i8.p0( ptr {{%[0-9]+}}, i32 2)
640- // CHECK: call <2 x i8> @llvm.nvvm.ldg.global.i.v2i8.p0( ptr {{%[0-9]+}}, i32 2)
641- // CHECK: call <2 x i8> @llvm.nvvm.ldg.global.i.v2i8.p0( ptr {{%[0-9]+}}, i32 2)
639+ // CHECK: load <2 x i8>, ptr addrspace(1) {{%[0-9]+}}, align 2, !invariant.load
640+ // CHECK: load <2 x i8>, ptr addrspace(1) {{%[0-9]+}}, align 2, !invariant.load
641+ // CHECK: load <2 x i8>, ptr addrspace(1) {{%[0-9]+}}, align 2, !invariant.load
642642 typedef char char2 __attribute__((ext_vector_type (2 )));
643643 typedef unsigned char uchar2 __attribute__((ext_vector_type (2 )));
644644 typedef signed char schar2 __attribute__((ext_vector_type (2 )));
645645 __nvvm_ldg_c2 ((const char2 * )p );
646646 __nvvm_ldg_uc2 ((const uchar2 * )p );
647647 __nvvm_ldg_sc2 ((const schar2 * )p );
648648
649- // CHECK: call <4 x i8> @llvm.nvvm.ldg.global.i.v4i8.p0( ptr {{%[0-9]+}}, i32 4)
650- // CHECK: call <4 x i8> @llvm.nvvm.ldg.global.i.v4i8.p0( ptr {{%[0-9]+}}, i32 4)
651- // CHECK: call <4 x i8> @llvm.nvvm.ldg.global.i.v4i8.p0( ptr {{%[0-9]+}}, i32 4)
649+ // CHECK: load <4 x i8>, ptr addrspace(1) {{%[0-9]+}}, align 4, !invariant.load
650+ // CHECK: load <4 x i8>, ptr addrspace(1) {{%[0-9]+}}, align 4, !invariant.load
651+ // CHECK: load <4 x i8>, ptr addrspace(1) {{%[0-9]+}}, align 4, !invariant.load
652652 typedef char char4 __attribute__((ext_vector_type (4 )));
653653 typedef unsigned char uchar4 __attribute__((ext_vector_type (4 )));
654654 typedef signed char schar4 __attribute__((ext_vector_type (4 )));
655655 __nvvm_ldg_c4 ((const char4 * )p );
656656 __nvvm_ldg_uc4 ((const uchar4 * )p );
657657 __nvvm_ldg_sc4 ((const schar4 * )p );
658658
659- // CHECK: call <2 x i16> @llvm.nvvm.ldg.global.i.v2i16.p0( ptr {{%[0-9]+}}, i32 4)
660- // CHECK: call <2 x i16> @llvm.nvvm.ldg.global.i.v2i16.p0( ptr {{%[0-9]+}}, i32 4)
659+ // CHECK: load <2 x i16>, ptr addrspace(1) {{%[0-9]+}}, align 4, !invariant.load
660+ // CHECK: load <2 x i16>, ptr addrspace(1) {{%[0-9]+}}, align 4, !invariant.load
661661 typedef short short2 __attribute__((ext_vector_type (2 )));
662662 typedef unsigned short ushort2 __attribute__((ext_vector_type (2 )));
663663 __nvvm_ldg_s2 ((const short2 * )p );
664664 __nvvm_ldg_us2 ((const ushort2 * )p );
665665
666- // CHECK: call <4 x i16> @llvm.nvvm.ldg.global.i.v4i16.p0( ptr {{%[0-9]+}}, i32 8)
667- // CHECK: call <4 x i16> @llvm.nvvm.ldg.global.i.v4i16.p0( ptr {{%[0-9]+}}, i32 8)
666+ // CHECK: load <4 x i16>, ptr addrspace(1) {{%[0-9]+}}, align 8, !invariant.load
667+ // CHECK: load <4 x i16>, ptr addrspace(1) {{%[0-9]+}}, align 8, !invariant.load
668668 typedef short short4 __attribute__((ext_vector_type (4 )));
669669 typedef unsigned short ushort4 __attribute__((ext_vector_type (4 )));
670670 __nvvm_ldg_s4 ((const short4 * )p );
671671 __nvvm_ldg_us4 ((const ushort4 * )p );
672672
673- // CHECK: call <2 x i32> @llvm.nvvm.ldg.global.i.v2i32.p0( ptr {{%[0-9]+}}, i32 8)
674- // CHECK: call <2 x i32> @llvm.nvvm.ldg.global.i.v2i32.p0( ptr {{%[0-9]+}}, i32 8)
673+ // CHECK: load <2 x i32>, ptr addrspace(1) {{%[0-9]+}}, align 8, !invariant.load
674+ // CHECK: load <2 x i32>, ptr addrspace(1) {{%[0-9]+}}, align 8, !invariant.load
675675 typedef int int2 __attribute__((ext_vector_type (2 )));
676676 typedef unsigned int uint2 __attribute__((ext_vector_type (2 )));
677677 __nvvm_ldg_i2 ((const int2 * )p );
678678 __nvvm_ldg_ui2 ((const uint2 * )p );
679679
680- // CHECK: call <4 x i32> @llvm.nvvm.ldg.global.i.v4i32.p0( ptr {{%[0-9]+}}, i32 16)
681- // CHECK: call <4 x i32> @llvm.nvvm.ldg.global.i.v4i32.p0( ptr {{%[0-9]+}}, i32 16)
680+ // CHECK: load <4 x i32>, ptr addrspace(1) {{%[0-9]+}}, align 16, !invariant.load
681+ // CHECK: load <4 x i32>, ptr addrspace(1) {{%[0-9]+}}, align 16, !invariant.load
682682 typedef int int4 __attribute__((ext_vector_type (4 )));
683683 typedef unsigned int uint4 __attribute__((ext_vector_type (4 )));
684684 __nvvm_ldg_i4 ((const int4 * )p );
685685 __nvvm_ldg_ui4 ((const uint4 * )p );
686686
687- // LP32: call <2 x i32> @llvm.nvvm.ldg.global.i.v2i32.p0( ptr {{%[0-9]+}}, i32 8)
688- // LP32: call <2 x i32> @llvm.nvvm.ldg.global.i.v2i32.p0( ptr {{%[0-9]+}}, i32 8)
689- // LP64: call <2 x i64> @llvm.nvvm.ldg.global.i.v2i64.p0( ptr {{%[0-9]+}}, i32 16)
690- // LP64: call <2 x i64> @llvm.nvvm.ldg.global.i.v2i64.p0( ptr {{%[0-9]+}}, i32 16)
687+ // LP32: load <2 x i32>, ptr addrspace(1) {{%[0-9]+}}, align 8, !invariant.load
688+ // LP32: load <2 x i32>, ptr addrspace(1) {{%[0-9]+}}, align 8, !invariant.load
689+ // LP64: load <2 x i64>, ptr addrspace(1) {{%[0-9]+}}, align 16, !invariant.load
690+ // LP64: load <2 x i64>, ptr addrspace(1) {{%[0-9]+}}, align 16, !invariant.load
691691 typedef long long2 __attribute__((ext_vector_type (2 )));
692692 typedef unsigned long ulong2 __attribute__((ext_vector_type (2 )));
693693 __nvvm_ldg_l2 ((const long2 * )p );
694694 __nvvm_ldg_ul2 ((const ulong2 * )p );
695695
696- // CHECK: call <2 x i64> @llvm.nvvm.ldg.global.i.v2i64.p0( ptr {{%[0-9]+}}, i32 16)
697- // CHECK: call <2 x i64> @llvm.nvvm.ldg.global.i.v2i64.p0( ptr {{%[0-9]+}}, i32 16)
696+ // CHECK: load <2 x i64>, ptr addrspace(1) {{%[0-9]+}}, align 16, !invariant.load
697+ // CHECK: load <2 x i64>, ptr addrspace(1) {{%[0-9]+}}, align 16, !invariant.load
698698 typedef long long longlong2 __attribute__((ext_vector_type (2 )));
699699 typedef unsigned long long ulonglong2 __attribute__((ext_vector_type (2 )));
700700 __nvvm_ldg_ll2 ((const longlong2 * )p );
701701 __nvvm_ldg_ull2 ((const ulonglong2 * )p );
702702
703- // CHECK: call <2 x float> @llvm.nvvm.ldg.global.f.v2f32.p0( ptr {{%[0-9]+}}, i32 8)
703+ // CHECK: load <2 x float>, ptr addrspace(1) {{%[0-9]+}}, align 8, !invariant.load
704704 typedef float float2 __attribute__((ext_vector_type (2 )));
705705 __nvvm_ldg_f2 ((const float2 * )p );
706706
707- // CHECK: call <4 x float> @llvm.nvvm.ldg.global.f.v4f32.p0( ptr {{%[0-9]+}}, i32 16)
707+ // CHECK: load <4 x float>, ptr addrspace(1) {{%[0-9]+}}, align 16, !invariant.load
708708 typedef float float4 __attribute__((ext_vector_type (4 )));
709709 __nvvm_ldg_f4 ((const float4 * )p );
710710
711- // CHECK: call <2 x double> @llvm.nvvm.ldg.global.f.v2f64.p0( ptr {{%[0-9]+}}, i32 16)
711+ // CHECK: load <2 x double>, ptr addrspace(1) {{%[0-9]+}}, align 16, !invariant.load
712712 typedef double double2 __attribute__((ext_vector_type (2 )));
713713 __nvvm_ldg_d2 ((const double2 * )p );
714714}
0 commit comments