@@ -598,33 +598,33 @@ __device__ void nvvm_atom(float *fp, float f, double *dfp, double df,
598
598
599
599
// CHECK-LABEL: nvvm_ldg
600
600
__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
604
604
__nvvm_ldg_c ((const char * )p );
605
605
__nvvm_ldg_uc ((const unsigned char * )p );
606
606
__nvvm_ldg_sc ((const signed char * )p );
607
607
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
610
610
__nvvm_ldg_s ((const short * )p );
611
611
__nvvm_ldg_us ((const unsigned short * )p );
612
612
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
615
615
__nvvm_ldg_i ((const int * )p );
616
616
__nvvm_ldg_ui ((const unsigned int * )p );
617
617
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
622
622
__nvvm_ldg_l ((const long * )p );
623
623
__nvvm_ldg_ul ((const unsigned long * )p );
624
624
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
626
626
__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
628
628
__nvvm_ldg_d ((const double * )p );
629
629
630
630
// In practice, the pointers we pass to __ldg will be aligned as appropriate
@@ -636,79 +636,79 @@ __device__ void nvvm_ldg(const void *p) {
636
636
// elements, its alignment is set to number of elements times the alignment of
637
637
// its member: n*alignof(t)."
638
638
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
642
642
typedef char char2 __attribute__((ext_vector_type (2 )));
643
643
typedef unsigned char uchar2 __attribute__((ext_vector_type (2 )));
644
644
typedef signed char schar2 __attribute__((ext_vector_type (2 )));
645
645
__nvvm_ldg_c2 ((const char2 * )p );
646
646
__nvvm_ldg_uc2 ((const uchar2 * )p );
647
647
__nvvm_ldg_sc2 ((const schar2 * )p );
648
648
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
652
652
typedef char char4 __attribute__((ext_vector_type (4 )));
653
653
typedef unsigned char uchar4 __attribute__((ext_vector_type (4 )));
654
654
typedef signed char schar4 __attribute__((ext_vector_type (4 )));
655
655
__nvvm_ldg_c4 ((const char4 * )p );
656
656
__nvvm_ldg_uc4 ((const uchar4 * )p );
657
657
__nvvm_ldg_sc4 ((const schar4 * )p );
658
658
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
661
661
typedef short short2 __attribute__((ext_vector_type (2 )));
662
662
typedef unsigned short ushort2 __attribute__((ext_vector_type (2 )));
663
663
__nvvm_ldg_s2 ((const short2 * )p );
664
664
__nvvm_ldg_us2 ((const ushort2 * )p );
665
665
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
668
668
typedef short short4 __attribute__((ext_vector_type (4 )));
669
669
typedef unsigned short ushort4 __attribute__((ext_vector_type (4 )));
670
670
__nvvm_ldg_s4 ((const short4 * )p );
671
671
__nvvm_ldg_us4 ((const ushort4 * )p );
672
672
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
675
675
typedef int int2 __attribute__((ext_vector_type (2 )));
676
676
typedef unsigned int uint2 __attribute__((ext_vector_type (2 )));
677
677
__nvvm_ldg_i2 ((const int2 * )p );
678
678
__nvvm_ldg_ui2 ((const uint2 * )p );
679
679
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
682
682
typedef int int4 __attribute__((ext_vector_type (4 )));
683
683
typedef unsigned int uint4 __attribute__((ext_vector_type (4 )));
684
684
__nvvm_ldg_i4 ((const int4 * )p );
685
685
__nvvm_ldg_ui4 ((const uint4 * )p );
686
686
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
691
691
typedef long long2 __attribute__((ext_vector_type (2 )));
692
692
typedef unsigned long ulong2 __attribute__((ext_vector_type (2 )));
693
693
__nvvm_ldg_l2 ((const long2 * )p );
694
694
__nvvm_ldg_ul2 ((const ulong2 * )p );
695
695
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
698
698
typedef long long longlong2 __attribute__((ext_vector_type (2 )));
699
699
typedef unsigned long long ulonglong2 __attribute__((ext_vector_type (2 )));
700
700
__nvvm_ldg_ll2 ((const longlong2 * )p );
701
701
__nvvm_ldg_ull2 ((const ulonglong2 * )p );
702
702
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
704
704
typedef float float2 __attribute__((ext_vector_type (2 )));
705
705
__nvvm_ldg_f2 ((const float2 * )p );
706
706
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
708
708
typedef float float4 __attribute__((ext_vector_type (4 )));
709
709
__nvvm_ldg_f4 ((const float4 * )p );
710
710
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
712
712
typedef double double2 __attribute__((ext_vector_type (2 )));
713
713
__nvvm_ldg_d2 ((const double2 * )p );
714
714
}
0 commit comments