14
14
// CHECK-NEXT: entry:
15
15
// CHECK-NEXT: [[TMP0:%.*]] = xor i32 [[REGADDR:%.*]], 524288
16
16
// CHECK-NEXT: [[CONV_I:%.*]] = trunc i32 [[TMP0]] to i20
17
- // CHECK-NEXT: [[TMP1:%.*]] = inttoptr i20 [[CONV_I]] to ptr
18
- // CHECK-NEXT: [[TMP2:%.*]] = tail call noundef i32 @llvm.aie2.read.tm(ptr [[TMP1]])
19
- // CHECK-NEXT: ret i32 [[TMP2]]
17
+ // CHECK-NEXT: [[TMP1:%.*]] = inttoptr i20 [[CONV_I]] to ptr addrspace(15)
18
+ // CHECK-NEXT: [[TMP2:%.*]] = addrspacecast ptr addrspace(15) [[TMP1]] to ptr
19
+ // CHECK-NEXT: [[TMP3:%.*]] = tail call noundef i32 @llvm.aie2.read.tm(ptr [[TMP2]])
20
+ // CHECK-NEXT: ret i32 [[TMP3]]
20
21
//
21
22
uint32 test_read_tm (uint32 regAddr) {
22
23
return read_tm (regAddr);
@@ -26,8 +27,9 @@ uint32 test_read_tm(uint32 regAddr) {
26
27
// CHECK-NEXT: entry:
27
28
// CHECK-NEXT: [[TMP0:%.*]] = xor i32 [[REGADDR:%.*]], 524288
28
29
// CHECK-NEXT: [[CONV_I:%.*]] = trunc i32 [[TMP0]] to i20
29
- // CHECK-NEXT: [[TMP1:%.*]] = inttoptr i20 [[CONV_I]] to ptr
30
- // CHECK-NEXT: tail call void @llvm.aie2.write.tm(i32 [[REGVAL:%.*]], ptr [[TMP1]])
30
+ // CHECK-NEXT: [[TMP1:%.*]] = inttoptr i20 [[CONV_I]] to ptr addrspace(15)
31
+ // CHECK-NEXT: [[TMP2:%.*]] = addrspacecast ptr addrspace(15) [[TMP1]] to ptr
32
+ // CHECK-NEXT: tail call void @llvm.aie2.write.tm(i32 [[REGVAL:%.*]], ptr [[TMP2]])
31
33
// CHECK-NEXT: ret void
32
34
//
33
35
void test_write_tm (uint32 regVal, uint32 regAddr) {
@@ -38,9 +40,10 @@ void test_write_tm(uint32 regVal, uint32 regAddr) {
38
40
// CHECK-NEXT: entry:
39
41
// CHECK-NEXT: [[ADD_I:%.*]] = add i32 [[TMADDRSPACESTART:%.*]], [[REGADDR:%.*]]
40
42
// CHECK-NEXT: [[CONV_I:%.*]] = trunc i32 [[ADD_I]] to i20
41
- // CHECK-NEXT: [[TMP0:%.*]] = inttoptr i20 [[CONV_I]] to ptr
42
- // CHECK-NEXT: [[TMP1:%.*]] = tail call noundef i32 @llvm.aie2.read.tm(ptr [[TMP0]])
43
- // CHECK-NEXT: ret i32 [[TMP1]]
43
+ // CHECK-NEXT: [[TMP0:%.*]] = inttoptr i20 [[CONV_I]] to ptr addrspace(15)
44
+ // CHECK-NEXT: [[TMP1:%.*]] = addrspacecast ptr addrspace(15) [[TMP0]] to ptr
45
+ // CHECK-NEXT: [[TMP2:%.*]] = tail call noundef i32 @llvm.aie2.read.tm(ptr [[TMP1]])
46
+ // CHECK-NEXT: ret i32 [[TMP2]]
44
47
//
45
48
uint32 test_read_tm (uint32 regAddr, uint32 TMAddrSpaceStart) {
46
49
return read_tm (regAddr, TMAddrSpaceStart);
@@ -50,8 +53,9 @@ uint32 test_read_tm(uint32 regAddr, uint32 TMAddrSpaceStart) {
50
53
// CHECK-NEXT: entry:
51
54
// CHECK-NEXT: [[ADD_I:%.*]] = add i32 [[TMADDRSPACESTART:%.*]], [[REGADDR:%.*]]
52
55
// CHECK-NEXT: [[CONV_I:%.*]] = trunc i32 [[ADD_I]] to i20
53
- // CHECK-NEXT: [[TMP0:%.*]] = inttoptr i20 [[CONV_I]] to ptr
54
- // CHECK-NEXT: tail call void @llvm.aie2.write.tm(i32 [[REGVAL:%.*]], ptr [[TMP0]])
56
+ // CHECK-NEXT: [[TMP0:%.*]] = inttoptr i20 [[CONV_I]] to ptr addrspace(15)
57
+ // CHECK-NEXT: [[TMP1:%.*]] = addrspacecast ptr addrspace(15) [[TMP0]] to ptr
58
+ // CHECK-NEXT: tail call void @llvm.aie2.write.tm(i32 [[REGVAL:%.*]], ptr [[TMP1]])
55
59
// CHECK-NEXT: ret void
56
60
//
57
61
void test_write_tm (uint32 regVal, uint32 regAddr, uint32 TMAddrSpaceStart) {
0 commit comments