199b22a6cSPhilip Reames; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 299b22a6cSPhilip Reames; RUN: opt < %s -msan-check-access-address=0 -S -passes=msan 2>&1 | FileCheck %s --implicit-check-not="call void @__msan_warning" 399b22a6cSPhilip Reames; RUN: opt < %s -msan-check-access-address=1 -S -passes=msan 2>&1 | FileCheck %s --check-prefixes=ADDR --implicit-check-not="call void @__msan_warning" 499b22a6cSPhilip Reames; RUN: opt < %s -msan-check-access-address=0 -msan-track-origins=1 -S -passes=msan 2>&1 | FileCheck %s --check-prefixes=ORIGINS --implicit-check-not="call void @__msan_warning" 599b22a6cSPhilip Reames 699b22a6cSPhilip Reamestarget triple = "x86_64-unknown-linux-gnu" 799b22a6cSPhilip Reamestarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 899b22a6cSPhilip Reames 9473e9adbSPhilip Reamesdefine void @load.v1i32(ptr %p) sanitize_memory { 1099b22a6cSPhilip Reames; CHECK-LABEL: @load.v1i32( 1199b22a6cSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 1299b22a6cSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = load <1 x i32>, ptr [[P:%.*]], align 4 13473e9adbSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 14473e9adbSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 15473e9adbSPhilip Reames; CHECK-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 16473e9adbSPhilip Reames; CHECK-NEXT: [[_MSLD:%.*]] = load <1 x i32>, ptr [[TMP4]], align 4 1799b22a6cSPhilip Reames; CHECK-NEXT: ret void 1899b22a6cSPhilip Reames; 1999b22a6cSPhilip Reames; ADDR-LABEL: @load.v1i32( 20473e9adbSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 2199b22a6cSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 22473e9adbSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 23473e9adbSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0:![0-9]+]] 24473e9adbSPhilip Reames; ADDR: 2: 25473e9adbSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3:[0-9]+]] 26473e9adbSPhilip Reames; ADDR-NEXT: unreachable 27473e9adbSPhilip Reames; ADDR: 3: 28473e9adbSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = load <1 x i32>, ptr [[P:%.*]], align 4 29473e9adbSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64 30473e9adbSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080 31473e9adbSPhilip Reames; ADDR-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr 32473e9adbSPhilip Reames; ADDR-NEXT: [[_MSLD:%.*]] = load <1 x i32>, ptr [[TMP7]], align 4 3399b22a6cSPhilip Reames; ADDR-NEXT: ret void 3499b22a6cSPhilip Reames; 3599b22a6cSPhilip Reames; ORIGINS-LABEL: @load.v1i32( 3699b22a6cSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 3799b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = load <1 x i32>, ptr [[P:%.*]], align 4 38473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 39473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 40473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 41473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416 42473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 43473e9adbSPhilip Reames; ORIGINS-NEXT: [[_MSLD:%.*]] = load <1 x i32>, ptr [[TMP4]], align 4 44473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 4 4599b22a6cSPhilip Reames; ORIGINS-NEXT: ret void 4699b22a6cSPhilip Reames; 4799b22a6cSPhilip Reames load <1 x i32>, ptr %p 4899b22a6cSPhilip Reames ret void 4999b22a6cSPhilip Reames} 5099b22a6cSPhilip Reames 51473e9adbSPhilip Reamesdefine void @load.v2i32(ptr %p) sanitize_memory { 5299b22a6cSPhilip Reames; CHECK-LABEL: @load.v2i32( 5399b22a6cSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 5499b22a6cSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = load <2 x i32>, ptr [[P:%.*]], align 8 55473e9adbSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 56473e9adbSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 57473e9adbSPhilip Reames; CHECK-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 58473e9adbSPhilip Reames; CHECK-NEXT: [[_MSLD:%.*]] = load <2 x i32>, ptr [[TMP4]], align 8 5999b22a6cSPhilip Reames; CHECK-NEXT: ret void 6099b22a6cSPhilip Reames; 6199b22a6cSPhilip Reames; ADDR-LABEL: @load.v2i32( 62473e9adbSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 6399b22a6cSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 64473e9adbSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 65473e9adbSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 66473e9adbSPhilip Reames; ADDR: 2: 67473e9adbSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 68473e9adbSPhilip Reames; ADDR-NEXT: unreachable 69473e9adbSPhilip Reames; ADDR: 3: 70473e9adbSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = load <2 x i32>, ptr [[P:%.*]], align 8 71473e9adbSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64 72473e9adbSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080 73473e9adbSPhilip Reames; ADDR-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr 74473e9adbSPhilip Reames; ADDR-NEXT: [[_MSLD:%.*]] = load <2 x i32>, ptr [[TMP7]], align 8 7599b22a6cSPhilip Reames; ADDR-NEXT: ret void 7699b22a6cSPhilip Reames; 7799b22a6cSPhilip Reames; ORIGINS-LABEL: @load.v2i32( 7899b22a6cSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 7999b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = load <2 x i32>, ptr [[P:%.*]], align 8 80473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 81473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 82473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 83473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416 84473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 85473e9adbSPhilip Reames; ORIGINS-NEXT: [[_MSLD:%.*]] = load <2 x i32>, ptr [[TMP4]], align 8 86473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 8 8799b22a6cSPhilip Reames; ORIGINS-NEXT: ret void 8899b22a6cSPhilip Reames; 8999b22a6cSPhilip Reames load <2 x i32>, ptr %p 9099b22a6cSPhilip Reames ret void 9199b22a6cSPhilip Reames} 9299b22a6cSPhilip Reames 93473e9adbSPhilip Reamesdefine void @load.v4i32(ptr %p) sanitize_memory { 9499b22a6cSPhilip Reames; CHECK-LABEL: @load.v4i32( 9599b22a6cSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 9699b22a6cSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = load <4 x i32>, ptr [[P:%.*]], align 16 97473e9adbSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 98473e9adbSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 99473e9adbSPhilip Reames; CHECK-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 100473e9adbSPhilip Reames; CHECK-NEXT: [[_MSLD:%.*]] = load <4 x i32>, ptr [[TMP4]], align 16 10199b22a6cSPhilip Reames; CHECK-NEXT: ret void 10299b22a6cSPhilip Reames; 10399b22a6cSPhilip Reames; ADDR-LABEL: @load.v4i32( 104473e9adbSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 10599b22a6cSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 106473e9adbSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 107473e9adbSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 108473e9adbSPhilip Reames; ADDR: 2: 109473e9adbSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 110473e9adbSPhilip Reames; ADDR-NEXT: unreachable 111473e9adbSPhilip Reames; ADDR: 3: 112473e9adbSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = load <4 x i32>, ptr [[P:%.*]], align 16 113473e9adbSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64 114473e9adbSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080 115473e9adbSPhilip Reames; ADDR-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr 116473e9adbSPhilip Reames; ADDR-NEXT: [[_MSLD:%.*]] = load <4 x i32>, ptr [[TMP7]], align 16 11799b22a6cSPhilip Reames; ADDR-NEXT: ret void 11899b22a6cSPhilip Reames; 11999b22a6cSPhilip Reames; ORIGINS-LABEL: @load.v4i32( 12099b22a6cSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 12199b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = load <4 x i32>, ptr [[P:%.*]], align 16 122473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 123473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 124473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 125473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416 126473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 127473e9adbSPhilip Reames; ORIGINS-NEXT: [[_MSLD:%.*]] = load <4 x i32>, ptr [[TMP4]], align 16 128473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 16 12999b22a6cSPhilip Reames; ORIGINS-NEXT: ret void 13099b22a6cSPhilip Reames; 13199b22a6cSPhilip Reames load <4 x i32>, ptr %p 13299b22a6cSPhilip Reames ret void 13399b22a6cSPhilip Reames} 13499b22a6cSPhilip Reames 135473e9adbSPhilip Reamesdefine void @load.v8i32(ptr %p) sanitize_memory { 13699b22a6cSPhilip Reames; CHECK-LABEL: @load.v8i32( 13799b22a6cSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 13899b22a6cSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = load <8 x i32>, ptr [[P:%.*]], align 32 139473e9adbSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 140473e9adbSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 141473e9adbSPhilip Reames; CHECK-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 142473e9adbSPhilip Reames; CHECK-NEXT: [[_MSLD:%.*]] = load <8 x i32>, ptr [[TMP4]], align 32 14399b22a6cSPhilip Reames; CHECK-NEXT: ret void 14499b22a6cSPhilip Reames; 14599b22a6cSPhilip Reames; ADDR-LABEL: @load.v8i32( 146473e9adbSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 14799b22a6cSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 148473e9adbSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 149473e9adbSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 150473e9adbSPhilip Reames; ADDR: 2: 151473e9adbSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 152473e9adbSPhilip Reames; ADDR-NEXT: unreachable 153473e9adbSPhilip Reames; ADDR: 3: 154473e9adbSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = load <8 x i32>, ptr [[P:%.*]], align 32 155473e9adbSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64 156473e9adbSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080 157473e9adbSPhilip Reames; ADDR-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr 158473e9adbSPhilip Reames; ADDR-NEXT: [[_MSLD:%.*]] = load <8 x i32>, ptr [[TMP7]], align 32 15999b22a6cSPhilip Reames; ADDR-NEXT: ret void 16099b22a6cSPhilip Reames; 16199b22a6cSPhilip Reames; ORIGINS-LABEL: @load.v8i32( 16299b22a6cSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 16399b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = load <8 x i32>, ptr [[P:%.*]], align 32 164473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 165473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 166473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 167473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416 168473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 169473e9adbSPhilip Reames; ORIGINS-NEXT: [[_MSLD:%.*]] = load <8 x i32>, ptr [[TMP4]], align 32 170473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 32 17199b22a6cSPhilip Reames; ORIGINS-NEXT: ret void 17299b22a6cSPhilip Reames; 17399b22a6cSPhilip Reames load <8 x i32>, ptr %p 17499b22a6cSPhilip Reames ret void 17599b22a6cSPhilip Reames} 17699b22a6cSPhilip Reames 177473e9adbSPhilip Reamesdefine void @load.v16i32(ptr %p) sanitize_memory { 17899b22a6cSPhilip Reames; CHECK-LABEL: @load.v16i32( 17999b22a6cSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 18099b22a6cSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = load <16 x i32>, ptr [[P:%.*]], align 64 181473e9adbSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 182473e9adbSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 183473e9adbSPhilip Reames; CHECK-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 184473e9adbSPhilip Reames; CHECK-NEXT: [[_MSLD:%.*]] = load <16 x i32>, ptr [[TMP4]], align 64 18599b22a6cSPhilip Reames; CHECK-NEXT: ret void 18699b22a6cSPhilip Reames; 18799b22a6cSPhilip Reames; ADDR-LABEL: @load.v16i32( 188473e9adbSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 18999b22a6cSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 190473e9adbSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 191473e9adbSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 192473e9adbSPhilip Reames; ADDR: 2: 193473e9adbSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 194473e9adbSPhilip Reames; ADDR-NEXT: unreachable 195473e9adbSPhilip Reames; ADDR: 3: 196473e9adbSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = load <16 x i32>, ptr [[P:%.*]], align 64 197473e9adbSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64 198473e9adbSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080 199473e9adbSPhilip Reames; ADDR-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr 200473e9adbSPhilip Reames; ADDR-NEXT: [[_MSLD:%.*]] = load <16 x i32>, ptr [[TMP7]], align 64 20199b22a6cSPhilip Reames; ADDR-NEXT: ret void 20299b22a6cSPhilip Reames; 20399b22a6cSPhilip Reames; ORIGINS-LABEL: @load.v16i32( 20499b22a6cSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 20599b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = load <16 x i32>, ptr [[P:%.*]], align 64 206473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 207473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 208473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 209473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416 210473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 211473e9adbSPhilip Reames; ORIGINS-NEXT: [[_MSLD:%.*]] = load <16 x i32>, ptr [[TMP4]], align 64 212473e9adbSPhilip Reames; ORIGINS-NEXT: [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 64 21399b22a6cSPhilip Reames; ORIGINS-NEXT: ret void 21499b22a6cSPhilip Reames; 21599b22a6cSPhilip Reames load <16 x i32>, ptr %p 21699b22a6cSPhilip Reames ret void 21799b22a6cSPhilip Reames} 21899b22a6cSPhilip Reames 21999b22a6cSPhilip Reames 220473e9adbSPhilip Reamesdefine void @store.v1i32(ptr %p) sanitize_memory { 22199b22a6cSPhilip Reames; CHECK-LABEL: @store.v1i32( 22299b22a6cSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 22399b22a6cSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 22499b22a6cSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 22599b22a6cSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 22699b22a6cSPhilip Reames; CHECK-NEXT: store <1 x i32> zeroinitializer, ptr [[TMP3]], align 4 22799b22a6cSPhilip Reames; CHECK-NEXT: store <1 x i32> zeroinitializer, ptr [[P]], align 4 22899b22a6cSPhilip Reames; CHECK-NEXT: ret void 22999b22a6cSPhilip Reames; 23099b22a6cSPhilip Reames; ADDR-LABEL: @store.v1i32( 231473e9adbSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 23299b22a6cSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 233473e9adbSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 234473e9adbSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 235473e9adbSPhilip Reames; ADDR: 2: 236473e9adbSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 237473e9adbSPhilip Reames; ADDR-NEXT: unreachable 238473e9adbSPhilip Reames; ADDR: 3: 239473e9adbSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64 240473e9adbSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 241473e9adbSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 242473e9adbSPhilip Reames; ADDR-NEXT: store <1 x i32> zeroinitializer, ptr [[TMP6]], align 4 24399b22a6cSPhilip Reames; ADDR-NEXT: store <1 x i32> zeroinitializer, ptr [[P]], align 4 24499b22a6cSPhilip Reames; ADDR-NEXT: ret void 24599b22a6cSPhilip Reames; 24699b22a6cSPhilip Reames; ORIGINS-LABEL: @store.v1i32( 24799b22a6cSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 24899b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 24999b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 25099b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 25199b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416 25299b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr 25399b22a6cSPhilip Reames; ORIGINS-NEXT: store <1 x i32> zeroinitializer, ptr [[TMP3]], align 4 25499b22a6cSPhilip Reames; ORIGINS-NEXT: store <1 x i32> zeroinitializer, ptr [[P]], align 4 25599b22a6cSPhilip Reames; ORIGINS-NEXT: ret void 25699b22a6cSPhilip Reames; 25799b22a6cSPhilip Reames store <1 x i32> zeroinitializer, ptr %p 25899b22a6cSPhilip Reames ret void 25999b22a6cSPhilip Reames} 26099b22a6cSPhilip Reames 261473e9adbSPhilip Reamesdefine void @store.v2i32(ptr %p) sanitize_memory { 26299b22a6cSPhilip Reames; CHECK-LABEL: @store.v2i32( 26399b22a6cSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 26499b22a6cSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 26599b22a6cSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 26699b22a6cSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 26799b22a6cSPhilip Reames; CHECK-NEXT: store <2 x i32> zeroinitializer, ptr [[TMP3]], align 8 26899b22a6cSPhilip Reames; CHECK-NEXT: store <2 x i32> zeroinitializer, ptr [[P]], align 8 26999b22a6cSPhilip Reames; CHECK-NEXT: ret void 27099b22a6cSPhilip Reames; 27199b22a6cSPhilip Reames; ADDR-LABEL: @store.v2i32( 272473e9adbSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 27399b22a6cSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 274473e9adbSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 275473e9adbSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 276473e9adbSPhilip Reames; ADDR: 2: 277473e9adbSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 278473e9adbSPhilip Reames; ADDR-NEXT: unreachable 279473e9adbSPhilip Reames; ADDR: 3: 280473e9adbSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64 281473e9adbSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 282473e9adbSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 283473e9adbSPhilip Reames; ADDR-NEXT: store <2 x i32> zeroinitializer, ptr [[TMP6]], align 8 28499b22a6cSPhilip Reames; ADDR-NEXT: store <2 x i32> zeroinitializer, ptr [[P]], align 8 28599b22a6cSPhilip Reames; ADDR-NEXT: ret void 28699b22a6cSPhilip Reames; 28799b22a6cSPhilip Reames; ORIGINS-LABEL: @store.v2i32( 28899b22a6cSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 28999b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 29099b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 29199b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 29299b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416 29399b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr 29499b22a6cSPhilip Reames; ORIGINS-NEXT: store <2 x i32> zeroinitializer, ptr [[TMP3]], align 8 29599b22a6cSPhilip Reames; ORIGINS-NEXT: store <2 x i32> zeroinitializer, ptr [[P]], align 8 29699b22a6cSPhilip Reames; ORIGINS-NEXT: ret void 29799b22a6cSPhilip Reames; 29899b22a6cSPhilip Reames store <2 x i32> zeroinitializer, ptr %p 29999b22a6cSPhilip Reames ret void 30099b22a6cSPhilip Reames} 30199b22a6cSPhilip Reames 302473e9adbSPhilip Reamesdefine void @store.v4i32(ptr %p) sanitize_memory { 30399b22a6cSPhilip Reames; CHECK-LABEL: @store.v4i32( 30499b22a6cSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 30599b22a6cSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 30699b22a6cSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 30799b22a6cSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 30899b22a6cSPhilip Reames; CHECK-NEXT: store <4 x i32> zeroinitializer, ptr [[TMP3]], align 16 30999b22a6cSPhilip Reames; CHECK-NEXT: store <4 x i32> zeroinitializer, ptr [[P]], align 16 31099b22a6cSPhilip Reames; CHECK-NEXT: ret void 31199b22a6cSPhilip Reames; 31299b22a6cSPhilip Reames; ADDR-LABEL: @store.v4i32( 313473e9adbSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 31499b22a6cSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 315473e9adbSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 316473e9adbSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 317473e9adbSPhilip Reames; ADDR: 2: 318473e9adbSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 319473e9adbSPhilip Reames; ADDR-NEXT: unreachable 320473e9adbSPhilip Reames; ADDR: 3: 321473e9adbSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64 322473e9adbSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 323473e9adbSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 324473e9adbSPhilip Reames; ADDR-NEXT: store <4 x i32> zeroinitializer, ptr [[TMP6]], align 16 32599b22a6cSPhilip Reames; ADDR-NEXT: store <4 x i32> zeroinitializer, ptr [[P]], align 16 32699b22a6cSPhilip Reames; ADDR-NEXT: ret void 32799b22a6cSPhilip Reames; 32899b22a6cSPhilip Reames; ORIGINS-LABEL: @store.v4i32( 32999b22a6cSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 33099b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 33199b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 33299b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 33399b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416 33499b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr 33599b22a6cSPhilip Reames; ORIGINS-NEXT: store <4 x i32> zeroinitializer, ptr [[TMP3]], align 16 33699b22a6cSPhilip Reames; ORIGINS-NEXT: store <4 x i32> zeroinitializer, ptr [[P]], align 16 33799b22a6cSPhilip Reames; ORIGINS-NEXT: ret void 33899b22a6cSPhilip Reames; 33999b22a6cSPhilip Reames store <4 x i32> zeroinitializer, ptr %p 34099b22a6cSPhilip Reames ret void 34199b22a6cSPhilip Reames} 34299b22a6cSPhilip Reames 343473e9adbSPhilip Reamesdefine void @store.v8i32(ptr %p) sanitize_memory { 34499b22a6cSPhilip Reames; CHECK-LABEL: @store.v8i32( 34599b22a6cSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 34699b22a6cSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 34799b22a6cSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 34899b22a6cSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 34999b22a6cSPhilip Reames; CHECK-NEXT: store <8 x i32> zeroinitializer, ptr [[TMP3]], align 32 35099b22a6cSPhilip Reames; CHECK-NEXT: store <8 x i32> zeroinitializer, ptr [[P]], align 32 35199b22a6cSPhilip Reames; CHECK-NEXT: ret void 35299b22a6cSPhilip Reames; 35399b22a6cSPhilip Reames; ADDR-LABEL: @store.v8i32( 354473e9adbSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 35599b22a6cSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 356473e9adbSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 357473e9adbSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 358473e9adbSPhilip Reames; ADDR: 2: 359473e9adbSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 360473e9adbSPhilip Reames; ADDR-NEXT: unreachable 361473e9adbSPhilip Reames; ADDR: 3: 362473e9adbSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64 363473e9adbSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 364473e9adbSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 365473e9adbSPhilip Reames; ADDR-NEXT: store <8 x i32> zeroinitializer, ptr [[TMP6]], align 32 36699b22a6cSPhilip Reames; ADDR-NEXT: store <8 x i32> zeroinitializer, ptr [[P]], align 32 36799b22a6cSPhilip Reames; ADDR-NEXT: ret void 36899b22a6cSPhilip Reames; 36999b22a6cSPhilip Reames; ORIGINS-LABEL: @store.v8i32( 37099b22a6cSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 37199b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 37299b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 37399b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 37499b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416 37599b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr 37699b22a6cSPhilip Reames; ORIGINS-NEXT: store <8 x i32> zeroinitializer, ptr [[TMP3]], align 32 37799b22a6cSPhilip Reames; ORIGINS-NEXT: store <8 x i32> zeroinitializer, ptr [[P]], align 32 37899b22a6cSPhilip Reames; ORIGINS-NEXT: ret void 37999b22a6cSPhilip Reames; 38099b22a6cSPhilip Reames store <8 x i32> zeroinitializer, ptr %p 38199b22a6cSPhilip Reames ret void 38299b22a6cSPhilip Reames} 38399b22a6cSPhilip Reames 384473e9adbSPhilip Reamesdefine void @store.v16i32(ptr %p) sanitize_memory { 38599b22a6cSPhilip Reames; CHECK-LABEL: @store.v16i32( 38699b22a6cSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 38799b22a6cSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 38899b22a6cSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 38999b22a6cSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 39099b22a6cSPhilip Reames; CHECK-NEXT: store <16 x i32> zeroinitializer, ptr [[TMP3]], align 64 39199b22a6cSPhilip Reames; CHECK-NEXT: store <16 x i32> zeroinitializer, ptr [[P]], align 64 39299b22a6cSPhilip Reames; CHECK-NEXT: ret void 39399b22a6cSPhilip Reames; 39499b22a6cSPhilip Reames; ADDR-LABEL: @store.v16i32( 395473e9adbSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 39699b22a6cSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 397473e9adbSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 398473e9adbSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 399473e9adbSPhilip Reames; ADDR: 2: 400473e9adbSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 401473e9adbSPhilip Reames; ADDR-NEXT: unreachable 402473e9adbSPhilip Reames; ADDR: 3: 403473e9adbSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64 404473e9adbSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 405473e9adbSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 406473e9adbSPhilip Reames; ADDR-NEXT: store <16 x i32> zeroinitializer, ptr [[TMP6]], align 64 40799b22a6cSPhilip Reames; ADDR-NEXT: store <16 x i32> zeroinitializer, ptr [[P]], align 64 40899b22a6cSPhilip Reames; ADDR-NEXT: ret void 40999b22a6cSPhilip Reames; 41099b22a6cSPhilip Reames; ORIGINS-LABEL: @store.v16i32( 41199b22a6cSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 41299b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 41399b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 41499b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 41599b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416 41699b22a6cSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr 41799b22a6cSPhilip Reames; ORIGINS-NEXT: store <16 x i32> zeroinitializer, ptr [[TMP3]], align 64 41899b22a6cSPhilip Reames; ORIGINS-NEXT: store <16 x i32> zeroinitializer, ptr [[P]], align 64 41999b22a6cSPhilip Reames; ORIGINS-NEXT: ret void 42099b22a6cSPhilip Reames; 42199b22a6cSPhilip Reames store <16 x i32> zeroinitializer, ptr %p 42299b22a6cSPhilip Reames ret void 42399b22a6cSPhilip Reames} 42499b22a6cSPhilip Reames 4255bcb4c4dSPhilip Reamesdefine void @load.nxv1i32(ptr %p) sanitize_memory { 4265bcb4c4dSPhilip Reames; CHECK-LABEL: @load.nxv1i32( 4275bcb4c4dSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 4285bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = load <vscale x 1 x i32>, ptr [[P:%.*]], align 4 4295bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 4305bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 4315bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 4325bcb4c4dSPhilip Reames; CHECK-NEXT: [[_MSLD:%.*]] = load <vscale x 1 x i32>, ptr [[TMP4]], align 4 4335bcb4c4dSPhilip Reames; CHECK-NEXT: ret void 4345bcb4c4dSPhilip Reames; 4355bcb4c4dSPhilip Reames; ADDR-LABEL: @load.nxv1i32( 4365bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 4375bcb4c4dSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 4385bcb4c4dSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 4395bcb4c4dSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 4405bcb4c4dSPhilip Reames; ADDR: 2: 4415bcb4c4dSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 4425bcb4c4dSPhilip Reames; ADDR-NEXT: unreachable 4435bcb4c4dSPhilip Reames; ADDR: 3: 4445bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = load <vscale x 1 x i32>, ptr [[P:%.*]], align 4 4455bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64 4465bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080 4475bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr 4485bcb4c4dSPhilip Reames; ADDR-NEXT: [[_MSLD:%.*]] = load <vscale x 1 x i32>, ptr [[TMP7]], align 4 4495bcb4c4dSPhilip Reames; ADDR-NEXT: ret void 4505bcb4c4dSPhilip Reames; 4515bcb4c4dSPhilip Reames; ORIGINS-LABEL: @load.nxv1i32( 4525bcb4c4dSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 4535bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = load <vscale x 1 x i32>, ptr [[P:%.*]], align 4 4545bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 4555bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 4565bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 4575bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416 4585bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 4595bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[_MSLD:%.*]] = load <vscale x 1 x i32>, ptr [[TMP4]], align 4 4605bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 4 4615bcb4c4dSPhilip Reames; ORIGINS-NEXT: ret void 4625bcb4c4dSPhilip Reames; 4635bcb4c4dSPhilip Reames load <vscale x 1 x i32>, ptr %p 4645bcb4c4dSPhilip Reames ret void 4655bcb4c4dSPhilip Reames} 46699b22a6cSPhilip Reames 4675bcb4c4dSPhilip Reamesdefine void @load.nxv2i32(ptr %p) sanitize_memory { 4685bcb4c4dSPhilip Reames; CHECK-LABEL: @load.nxv2i32( 4695bcb4c4dSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 4705bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = load <vscale x 2 x i32>, ptr [[P:%.*]], align 8 4715bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 4725bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 4735bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 4745bcb4c4dSPhilip Reames; CHECK-NEXT: [[_MSLD:%.*]] = load <vscale x 2 x i32>, ptr [[TMP4]], align 8 4755bcb4c4dSPhilip Reames; CHECK-NEXT: ret void 4765bcb4c4dSPhilip Reames; 4775bcb4c4dSPhilip Reames; ADDR-LABEL: @load.nxv2i32( 4785bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 4795bcb4c4dSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 4805bcb4c4dSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 4815bcb4c4dSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 4825bcb4c4dSPhilip Reames; ADDR: 2: 4835bcb4c4dSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 4845bcb4c4dSPhilip Reames; ADDR-NEXT: unreachable 4855bcb4c4dSPhilip Reames; ADDR: 3: 4865bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = load <vscale x 2 x i32>, ptr [[P:%.*]], align 8 4875bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64 4885bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080 4895bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr 4905bcb4c4dSPhilip Reames; ADDR-NEXT: [[_MSLD:%.*]] = load <vscale x 2 x i32>, ptr [[TMP7]], align 8 4915bcb4c4dSPhilip Reames; ADDR-NEXT: ret void 4925bcb4c4dSPhilip Reames; 4935bcb4c4dSPhilip Reames; ORIGINS-LABEL: @load.nxv2i32( 4945bcb4c4dSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 4955bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = load <vscale x 2 x i32>, ptr [[P:%.*]], align 8 4965bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 4975bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 4985bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 4995bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416 5005bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 5015bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[_MSLD:%.*]] = load <vscale x 2 x i32>, ptr [[TMP4]], align 8 5025bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 8 5035bcb4c4dSPhilip Reames; ORIGINS-NEXT: ret void 5045bcb4c4dSPhilip Reames; 5055bcb4c4dSPhilip Reames load <vscale x 2 x i32>, ptr %p 5065bcb4c4dSPhilip Reames ret void 5075bcb4c4dSPhilip Reames} 5085bcb4c4dSPhilip Reames 5095bcb4c4dSPhilip Reamesdefine void @load.nxv4i32(ptr %p) sanitize_memory { 5105bcb4c4dSPhilip Reames; CHECK-LABEL: @load.nxv4i32( 5115bcb4c4dSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 5125bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = load <vscale x 4 x i32>, ptr [[P:%.*]], align 16 5135bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 5145bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 5155bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 5165bcb4c4dSPhilip Reames; CHECK-NEXT: [[_MSLD:%.*]] = load <vscale x 4 x i32>, ptr [[TMP4]], align 16 5175bcb4c4dSPhilip Reames; CHECK-NEXT: ret void 5185bcb4c4dSPhilip Reames; 5195bcb4c4dSPhilip Reames; ADDR-LABEL: @load.nxv4i32( 5205bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 5215bcb4c4dSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 5225bcb4c4dSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 5235bcb4c4dSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 5245bcb4c4dSPhilip Reames; ADDR: 2: 5255bcb4c4dSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 5265bcb4c4dSPhilip Reames; ADDR-NEXT: unreachable 5275bcb4c4dSPhilip Reames; ADDR: 3: 5285bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = load <vscale x 4 x i32>, ptr [[P:%.*]], align 16 5295bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64 5305bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080 5315bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr 5325bcb4c4dSPhilip Reames; ADDR-NEXT: [[_MSLD:%.*]] = load <vscale x 4 x i32>, ptr [[TMP7]], align 16 5335bcb4c4dSPhilip Reames; ADDR-NEXT: ret void 5345bcb4c4dSPhilip Reames; 5355bcb4c4dSPhilip Reames; ORIGINS-LABEL: @load.nxv4i32( 5365bcb4c4dSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 5375bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = load <vscale x 4 x i32>, ptr [[P:%.*]], align 16 5385bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 5395bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 5405bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 5415bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416 5425bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 5435bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[_MSLD:%.*]] = load <vscale x 4 x i32>, ptr [[TMP4]], align 16 5445bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 16 5455bcb4c4dSPhilip Reames; ORIGINS-NEXT: ret void 5465bcb4c4dSPhilip Reames; 5475bcb4c4dSPhilip Reames load <vscale x 4 x i32>, ptr %p 5485bcb4c4dSPhilip Reames ret void 5495bcb4c4dSPhilip Reames} 5505bcb4c4dSPhilip Reames 5515bcb4c4dSPhilip Reamesdefine void @load.nxv8i32(ptr %p) sanitize_memory { 5525bcb4c4dSPhilip Reames; CHECK-LABEL: @load.nxv8i32( 5535bcb4c4dSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 5545bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = load <vscale x 8 x i32>, ptr [[P:%.*]], align 32 5555bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 5565bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 5575bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 5585bcb4c4dSPhilip Reames; CHECK-NEXT: [[_MSLD:%.*]] = load <vscale x 8 x i32>, ptr [[TMP4]], align 32 5595bcb4c4dSPhilip Reames; CHECK-NEXT: ret void 5605bcb4c4dSPhilip Reames; 5615bcb4c4dSPhilip Reames; ADDR-LABEL: @load.nxv8i32( 5625bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 5635bcb4c4dSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 5645bcb4c4dSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 5655bcb4c4dSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 5665bcb4c4dSPhilip Reames; ADDR: 2: 5675bcb4c4dSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 5685bcb4c4dSPhilip Reames; ADDR-NEXT: unreachable 5695bcb4c4dSPhilip Reames; ADDR: 3: 5705bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = load <vscale x 8 x i32>, ptr [[P:%.*]], align 32 5715bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64 5725bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080 5735bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr 5745bcb4c4dSPhilip Reames; ADDR-NEXT: [[_MSLD:%.*]] = load <vscale x 8 x i32>, ptr [[TMP7]], align 32 5755bcb4c4dSPhilip Reames; ADDR-NEXT: ret void 5765bcb4c4dSPhilip Reames; 5775bcb4c4dSPhilip Reames; ORIGINS-LABEL: @load.nxv8i32( 5785bcb4c4dSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 5795bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = load <vscale x 8 x i32>, ptr [[P:%.*]], align 32 5805bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 5815bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 5825bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 5835bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416 5845bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 5855bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[_MSLD:%.*]] = load <vscale x 8 x i32>, ptr [[TMP4]], align 32 5865bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 32 5875bcb4c4dSPhilip Reames; ORIGINS-NEXT: ret void 5885bcb4c4dSPhilip Reames; 5895bcb4c4dSPhilip Reames load <vscale x 8 x i32>, ptr %p 5905bcb4c4dSPhilip Reames ret void 5915bcb4c4dSPhilip Reames} 5925bcb4c4dSPhilip Reames 5935bcb4c4dSPhilip Reamesdefine void @load.nxv16i32(ptr %p) sanitize_memory { 5945bcb4c4dSPhilip Reames; CHECK-LABEL: @load.nxv16i32( 5955bcb4c4dSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 5965bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = load <vscale x 16 x i32>, ptr [[P:%.*]], align 64 5975bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 5985bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 5995bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 6005bcb4c4dSPhilip Reames; CHECK-NEXT: [[_MSLD:%.*]] = load <vscale x 16 x i32>, ptr [[TMP4]], align 64 6015bcb4c4dSPhilip Reames; CHECK-NEXT: ret void 6025bcb4c4dSPhilip Reames; 6035bcb4c4dSPhilip Reames; ADDR-LABEL: @load.nxv16i32( 6045bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 6055bcb4c4dSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 6065bcb4c4dSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 6075bcb4c4dSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 6085bcb4c4dSPhilip Reames; ADDR: 2: 6095bcb4c4dSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 6105bcb4c4dSPhilip Reames; ADDR-NEXT: unreachable 6115bcb4c4dSPhilip Reames; ADDR: 3: 6125bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = load <vscale x 16 x i32>, ptr [[P:%.*]], align 64 6135bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64 6145bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080 6155bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr 6165bcb4c4dSPhilip Reames; ADDR-NEXT: [[_MSLD:%.*]] = load <vscale x 16 x i32>, ptr [[TMP7]], align 64 6175bcb4c4dSPhilip Reames; ADDR-NEXT: ret void 6185bcb4c4dSPhilip Reames; 6195bcb4c4dSPhilip Reames; ORIGINS-LABEL: @load.nxv16i32( 6205bcb4c4dSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 6215bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = load <vscale x 16 x i32>, ptr [[P:%.*]], align 64 6225bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64 6235bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080 6245bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr 6255bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416 6265bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 6275bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[_MSLD:%.*]] = load <vscale x 16 x i32>, ptr [[TMP4]], align 64 6285bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 64 6295bcb4c4dSPhilip Reames; ORIGINS-NEXT: ret void 6305bcb4c4dSPhilip Reames; 6315bcb4c4dSPhilip Reames load <vscale x 16 x i32>, ptr %p 6325bcb4c4dSPhilip Reames ret void 6335bcb4c4dSPhilip Reames} 6345bcb4c4dSPhilip Reames 6355bcb4c4dSPhilip Reames 6365bcb4c4dSPhilip Reamesdefine void @store.nxv1i32(ptr %p) sanitize_memory { 6375bcb4c4dSPhilip Reames; CHECK-LABEL: @store.nxv1i32( 6385bcb4c4dSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 6395bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 6405bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 6415bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 6425bcb4c4dSPhilip Reames; CHECK-NEXT: store <vscale x 1 x i32> zeroinitializer, ptr [[TMP3]], align 4 6435bcb4c4dSPhilip Reames; CHECK-NEXT: store <vscale x 1 x i32> zeroinitializer, ptr [[P]], align 4 6445bcb4c4dSPhilip Reames; CHECK-NEXT: ret void 6455bcb4c4dSPhilip Reames; 6465bcb4c4dSPhilip Reames; ADDR-LABEL: @store.nxv1i32( 6475bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 6485bcb4c4dSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 6495bcb4c4dSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 6505bcb4c4dSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 6515bcb4c4dSPhilip Reames; ADDR: 2: 6525bcb4c4dSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 6535bcb4c4dSPhilip Reames; ADDR-NEXT: unreachable 6545bcb4c4dSPhilip Reames; ADDR: 3: 6555bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64 6565bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 6575bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 6585bcb4c4dSPhilip Reames; ADDR-NEXT: store <vscale x 1 x i32> zeroinitializer, ptr [[TMP6]], align 4 6595bcb4c4dSPhilip Reames; ADDR-NEXT: store <vscale x 1 x i32> zeroinitializer, ptr [[P]], align 4 6605bcb4c4dSPhilip Reames; ADDR-NEXT: ret void 6615bcb4c4dSPhilip Reames; 6625bcb4c4dSPhilip Reames; ORIGINS-LABEL: @store.nxv1i32( 6635bcb4c4dSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 6645bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 6655bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 6665bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 6675bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416 6685bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr 6695bcb4c4dSPhilip Reames; ORIGINS-NEXT: store <vscale x 1 x i32> zeroinitializer, ptr [[TMP3]], align 4 6705bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP6:%.*]] = call i32 @llvm.vector.reduce.or.nxv1i32(<vscale x 1 x i32> zeroinitializer) 6715bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[_MSCMP:%.*]] = icmp ne i32 [[TMP6]], 0 6725bcb4c4dSPhilip Reames; ORIGINS-NEXT: br i1 [[_MSCMP]], label [[TMP7:%.*]], label [[TMP13:%.*]], !prof [[PROF0:![0-9]+]] 6735bcb4c4dSPhilip Reames; ORIGINS: 7: 674*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP8:%.*]] = call i64 @llvm.vscale.i64() 675*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP9:%.*]] = mul i64 [[TMP8]], 4 676*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP10:%.*]] = add i64 [[TMP9]], 3 677*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP11:%.*]] = udiv i64 [[TMP10]], 4 6785bcb4c4dSPhilip Reames; ORIGINS-NEXT: br label [[DOTSPLIT:%.*]] 6795bcb4c4dSPhilip Reames; ORIGINS: .split: 680*3016c063SVitaly Buka; ORIGINS-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP7]] ], [ [[IV_NEXT:%.*]], [[DOTSPLIT]] ] 681*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP12:%.*]] = getelementptr i32, ptr [[TMP5]], i64 [[IV]] 6825bcb4c4dSPhilip Reames; ORIGINS-NEXT: store i32 0, ptr [[TMP12]], align 4 683*3016c063SVitaly Buka; ORIGINS-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 684*3016c063SVitaly Buka; ORIGINS-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP11]] 6855bcb4c4dSPhilip Reames; ORIGINS-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]] 6865bcb4c4dSPhilip Reames; ORIGINS: .split.split: 6875bcb4c4dSPhilip Reames; ORIGINS-NEXT: br label [[TMP13]] 6885bcb4c4dSPhilip Reames; ORIGINS: 13: 6895bcb4c4dSPhilip Reames; ORIGINS-NEXT: store <vscale x 1 x i32> zeroinitializer, ptr [[P]], align 4 6905bcb4c4dSPhilip Reames; ORIGINS-NEXT: ret void 6915bcb4c4dSPhilip Reames; 6925bcb4c4dSPhilip Reames store <vscale x 1 x i32> zeroinitializer, ptr %p 6935bcb4c4dSPhilip Reames ret void 6945bcb4c4dSPhilip Reames} 6955bcb4c4dSPhilip Reames 6965bcb4c4dSPhilip Reamesdefine void @store.nxv2i32(ptr %p) sanitize_memory { 6975bcb4c4dSPhilip Reames; CHECK-LABEL: @store.nxv2i32( 6985bcb4c4dSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 6995bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 7005bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 7015bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 7025bcb4c4dSPhilip Reames; CHECK-NEXT: store <vscale x 2 x i32> zeroinitializer, ptr [[TMP3]], align 8 7035bcb4c4dSPhilip Reames; CHECK-NEXT: store <vscale x 2 x i32> zeroinitializer, ptr [[P]], align 8 7045bcb4c4dSPhilip Reames; CHECK-NEXT: ret void 7055bcb4c4dSPhilip Reames; 7065bcb4c4dSPhilip Reames; ADDR-LABEL: @store.nxv2i32( 7075bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 7085bcb4c4dSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 7095bcb4c4dSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 7105bcb4c4dSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 7115bcb4c4dSPhilip Reames; ADDR: 2: 7125bcb4c4dSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 7135bcb4c4dSPhilip Reames; ADDR-NEXT: unreachable 7145bcb4c4dSPhilip Reames; ADDR: 3: 7155bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64 7165bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 7175bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 7185bcb4c4dSPhilip Reames; ADDR-NEXT: store <vscale x 2 x i32> zeroinitializer, ptr [[TMP6]], align 8 7195bcb4c4dSPhilip Reames; ADDR-NEXT: store <vscale x 2 x i32> zeroinitializer, ptr [[P]], align 8 7205bcb4c4dSPhilip Reames; ADDR-NEXT: ret void 7215bcb4c4dSPhilip Reames; 7225bcb4c4dSPhilip Reames; ORIGINS-LABEL: @store.nxv2i32( 7235bcb4c4dSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 7245bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 7255bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 7265bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 7275bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416 7285bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr 7295bcb4c4dSPhilip Reames; ORIGINS-NEXT: store <vscale x 2 x i32> zeroinitializer, ptr [[TMP3]], align 8 7305bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP6:%.*]] = call i32 @llvm.vector.reduce.or.nxv2i32(<vscale x 2 x i32> zeroinitializer) 7315bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[_MSCMP:%.*]] = icmp ne i32 [[TMP6]], 0 7325bcb4c4dSPhilip Reames; ORIGINS-NEXT: br i1 [[_MSCMP]], label [[TMP7:%.*]], label [[TMP13:%.*]], !prof [[PROF0]] 7335bcb4c4dSPhilip Reames; ORIGINS: 7: 734*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP8:%.*]] = call i64 @llvm.vscale.i64() 735*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP9:%.*]] = mul i64 [[TMP8]], 8 736*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP10:%.*]] = add i64 [[TMP9]], 3 737*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP11:%.*]] = udiv i64 [[TMP10]], 4 7385bcb4c4dSPhilip Reames; ORIGINS-NEXT: br label [[DOTSPLIT:%.*]] 7395bcb4c4dSPhilip Reames; ORIGINS: .split: 740*3016c063SVitaly Buka; ORIGINS-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP7]] ], [ [[IV_NEXT:%.*]], [[DOTSPLIT]] ] 741*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP12:%.*]] = getelementptr i32, ptr [[TMP5]], i64 [[IV]] 7425bcb4c4dSPhilip Reames; ORIGINS-NEXT: store i32 0, ptr [[TMP12]], align 4 743*3016c063SVitaly Buka; ORIGINS-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 744*3016c063SVitaly Buka; ORIGINS-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP11]] 7455bcb4c4dSPhilip Reames; ORIGINS-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]] 7465bcb4c4dSPhilip Reames; ORIGINS: .split.split: 7475bcb4c4dSPhilip Reames; ORIGINS-NEXT: br label [[TMP13]] 7485bcb4c4dSPhilip Reames; ORIGINS: 13: 7495bcb4c4dSPhilip Reames; ORIGINS-NEXT: store <vscale x 2 x i32> zeroinitializer, ptr [[P]], align 8 7505bcb4c4dSPhilip Reames; ORIGINS-NEXT: ret void 7515bcb4c4dSPhilip Reames; 7525bcb4c4dSPhilip Reames store <vscale x 2 x i32> zeroinitializer, ptr %p 7535bcb4c4dSPhilip Reames ret void 7545bcb4c4dSPhilip Reames} 7555bcb4c4dSPhilip Reames 7565bcb4c4dSPhilip Reamesdefine void @store.nxv4i32(ptr %p) sanitize_memory { 7575bcb4c4dSPhilip Reames; CHECK-LABEL: @store.nxv4i32( 7585bcb4c4dSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 7595bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 7605bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 7615bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 7625bcb4c4dSPhilip Reames; CHECK-NEXT: store <vscale x 4 x i32> zeroinitializer, ptr [[TMP3]], align 16 7635bcb4c4dSPhilip Reames; CHECK-NEXT: store <vscale x 4 x i32> zeroinitializer, ptr [[P]], align 16 7645bcb4c4dSPhilip Reames; CHECK-NEXT: ret void 7655bcb4c4dSPhilip Reames; 7665bcb4c4dSPhilip Reames; ADDR-LABEL: @store.nxv4i32( 7675bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 7685bcb4c4dSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 7695bcb4c4dSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 7705bcb4c4dSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 7715bcb4c4dSPhilip Reames; ADDR: 2: 7725bcb4c4dSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 7735bcb4c4dSPhilip Reames; ADDR-NEXT: unreachable 7745bcb4c4dSPhilip Reames; ADDR: 3: 7755bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64 7765bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 7775bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 7785bcb4c4dSPhilip Reames; ADDR-NEXT: store <vscale x 4 x i32> zeroinitializer, ptr [[TMP6]], align 16 7795bcb4c4dSPhilip Reames; ADDR-NEXT: store <vscale x 4 x i32> zeroinitializer, ptr [[P]], align 16 7805bcb4c4dSPhilip Reames; ADDR-NEXT: ret void 7815bcb4c4dSPhilip Reames; 7825bcb4c4dSPhilip Reames; ORIGINS-LABEL: @store.nxv4i32( 7835bcb4c4dSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 7845bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 7855bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 7865bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 7875bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416 7885bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr 7895bcb4c4dSPhilip Reames; ORIGINS-NEXT: store <vscale x 4 x i32> zeroinitializer, ptr [[TMP3]], align 16 7905bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP6:%.*]] = call i32 @llvm.vector.reduce.or.nxv4i32(<vscale x 4 x i32> zeroinitializer) 7915bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[_MSCMP:%.*]] = icmp ne i32 [[TMP6]], 0 7925bcb4c4dSPhilip Reames; ORIGINS-NEXT: br i1 [[_MSCMP]], label [[TMP7:%.*]], label [[TMP13:%.*]], !prof [[PROF0]] 7935bcb4c4dSPhilip Reames; ORIGINS: 7: 794*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP8:%.*]] = call i64 @llvm.vscale.i64() 795*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP9:%.*]] = mul i64 [[TMP8]], 16 796*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP10:%.*]] = add i64 [[TMP9]], 3 797*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP11:%.*]] = udiv i64 [[TMP10]], 4 7985bcb4c4dSPhilip Reames; ORIGINS-NEXT: br label [[DOTSPLIT:%.*]] 7995bcb4c4dSPhilip Reames; ORIGINS: .split: 800*3016c063SVitaly Buka; ORIGINS-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP7]] ], [ [[IV_NEXT:%.*]], [[DOTSPLIT]] ] 801*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP12:%.*]] = getelementptr i32, ptr [[TMP5]], i64 [[IV]] 8025bcb4c4dSPhilip Reames; ORIGINS-NEXT: store i32 0, ptr [[TMP12]], align 4 803*3016c063SVitaly Buka; ORIGINS-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 804*3016c063SVitaly Buka; ORIGINS-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP11]] 8055bcb4c4dSPhilip Reames; ORIGINS-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]] 8065bcb4c4dSPhilip Reames; ORIGINS: .split.split: 8075bcb4c4dSPhilip Reames; ORIGINS-NEXT: br label [[TMP13]] 8085bcb4c4dSPhilip Reames; ORIGINS: 13: 8095bcb4c4dSPhilip Reames; ORIGINS-NEXT: store <vscale x 4 x i32> zeroinitializer, ptr [[P]], align 16 8105bcb4c4dSPhilip Reames; ORIGINS-NEXT: ret void 8115bcb4c4dSPhilip Reames; 8125bcb4c4dSPhilip Reames store <vscale x 4 x i32> zeroinitializer, ptr %p 8135bcb4c4dSPhilip Reames ret void 8145bcb4c4dSPhilip Reames} 8155bcb4c4dSPhilip Reames 8165bcb4c4dSPhilip Reamesdefine void @store.nxv8i32(ptr %p) sanitize_memory { 8175bcb4c4dSPhilip Reames; CHECK-LABEL: @store.nxv8i32( 8185bcb4c4dSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 8195bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 8205bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 8215bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 8225bcb4c4dSPhilip Reames; CHECK-NEXT: store <vscale x 8 x i32> zeroinitializer, ptr [[TMP3]], align 32 8235bcb4c4dSPhilip Reames; CHECK-NEXT: store <vscale x 8 x i32> zeroinitializer, ptr [[P]], align 32 8245bcb4c4dSPhilip Reames; CHECK-NEXT: ret void 8255bcb4c4dSPhilip Reames; 8265bcb4c4dSPhilip Reames; ADDR-LABEL: @store.nxv8i32( 8275bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 8285bcb4c4dSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 8295bcb4c4dSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 8305bcb4c4dSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 8315bcb4c4dSPhilip Reames; ADDR: 2: 8325bcb4c4dSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 8335bcb4c4dSPhilip Reames; ADDR-NEXT: unreachable 8345bcb4c4dSPhilip Reames; ADDR: 3: 8355bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64 8365bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 8375bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 8385bcb4c4dSPhilip Reames; ADDR-NEXT: store <vscale x 8 x i32> zeroinitializer, ptr [[TMP6]], align 32 8395bcb4c4dSPhilip Reames; ADDR-NEXT: store <vscale x 8 x i32> zeroinitializer, ptr [[P]], align 32 8405bcb4c4dSPhilip Reames; ADDR-NEXT: ret void 8415bcb4c4dSPhilip Reames; 8425bcb4c4dSPhilip Reames; ORIGINS-LABEL: @store.nxv8i32( 8435bcb4c4dSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 8445bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 8455bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 8465bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 8475bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416 8485bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr 8495bcb4c4dSPhilip Reames; ORIGINS-NEXT: store <vscale x 8 x i32> zeroinitializer, ptr [[TMP3]], align 32 8505bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP6:%.*]] = call i32 @llvm.vector.reduce.or.nxv8i32(<vscale x 8 x i32> zeroinitializer) 8515bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[_MSCMP:%.*]] = icmp ne i32 [[TMP6]], 0 8525bcb4c4dSPhilip Reames; ORIGINS-NEXT: br i1 [[_MSCMP]], label [[TMP7:%.*]], label [[TMP13:%.*]], !prof [[PROF0]] 8535bcb4c4dSPhilip Reames; ORIGINS: 7: 854*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP8:%.*]] = call i64 @llvm.vscale.i64() 855*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP9:%.*]] = mul i64 [[TMP8]], 32 856*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP10:%.*]] = add i64 [[TMP9]], 3 857*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP11:%.*]] = udiv i64 [[TMP10]], 4 8585bcb4c4dSPhilip Reames; ORIGINS-NEXT: br label [[DOTSPLIT:%.*]] 8595bcb4c4dSPhilip Reames; ORIGINS: .split: 860*3016c063SVitaly Buka; ORIGINS-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP7]] ], [ [[IV_NEXT:%.*]], [[DOTSPLIT]] ] 861*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP12:%.*]] = getelementptr i32, ptr [[TMP5]], i64 [[IV]] 8625bcb4c4dSPhilip Reames; ORIGINS-NEXT: store i32 0, ptr [[TMP12]], align 4 863*3016c063SVitaly Buka; ORIGINS-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 864*3016c063SVitaly Buka; ORIGINS-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP11]] 8655bcb4c4dSPhilip Reames; ORIGINS-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]] 8665bcb4c4dSPhilip Reames; ORIGINS: .split.split: 8675bcb4c4dSPhilip Reames; ORIGINS-NEXT: br label [[TMP13]] 8685bcb4c4dSPhilip Reames; ORIGINS: 13: 8695bcb4c4dSPhilip Reames; ORIGINS-NEXT: store <vscale x 8 x i32> zeroinitializer, ptr [[P]], align 32 8705bcb4c4dSPhilip Reames; ORIGINS-NEXT: ret void 8715bcb4c4dSPhilip Reames; 8725bcb4c4dSPhilip Reames store <vscale x 8 x i32> zeroinitializer, ptr %p 8735bcb4c4dSPhilip Reames ret void 8745bcb4c4dSPhilip Reames} 8755bcb4c4dSPhilip Reames 8765bcb4c4dSPhilip Reamesdefine void @store.nxv16i32(ptr %p) sanitize_memory { 8775bcb4c4dSPhilip Reames; CHECK-LABEL: @store.nxv16i32( 8785bcb4c4dSPhilip Reames; CHECK-NEXT: call void @llvm.donothing() 8795bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 8805bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 8815bcb4c4dSPhilip Reames; CHECK-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 8825bcb4c4dSPhilip Reames; CHECK-NEXT: store <vscale x 16 x i32> zeroinitializer, ptr [[TMP3]], align 64 8835bcb4c4dSPhilip Reames; CHECK-NEXT: store <vscale x 16 x i32> zeroinitializer, ptr [[P]], align 64 8845bcb4c4dSPhilip Reames; CHECK-NEXT: ret void 8855bcb4c4dSPhilip Reames; 8865bcb4c4dSPhilip Reames; ADDR-LABEL: @store.nxv16i32( 8875bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8 8885bcb4c4dSPhilip Reames; ADDR-NEXT: call void @llvm.donothing() 8895bcb4c4dSPhilip Reames; ADDR-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0 8905bcb4c4dSPhilip Reames; ADDR-NEXT: br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]] 8915bcb4c4dSPhilip Reames; ADDR: 2: 8925bcb4c4dSPhilip Reames; ADDR-NEXT: call void @__msan_warning_noreturn() #[[ATTR3]] 8935bcb4c4dSPhilip Reames; ADDR-NEXT: unreachable 8945bcb4c4dSPhilip Reames; ADDR: 3: 8955bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64 8965bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 8975bcb4c4dSPhilip Reames; ADDR-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr 8985bcb4c4dSPhilip Reames; ADDR-NEXT: store <vscale x 16 x i32> zeroinitializer, ptr [[TMP6]], align 64 8995bcb4c4dSPhilip Reames; ADDR-NEXT: store <vscale x 16 x i32> zeroinitializer, ptr [[P]], align 64 9005bcb4c4dSPhilip Reames; ADDR-NEXT: ret void 9015bcb4c4dSPhilip Reames; 9025bcb4c4dSPhilip Reames; ORIGINS-LABEL: @store.nxv16i32( 9035bcb4c4dSPhilip Reames; ORIGINS-NEXT: call void @llvm.donothing() 9045bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64 9055bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080 9065bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr 9075bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416 9085bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr 9095bcb4c4dSPhilip Reames; ORIGINS-NEXT: store <vscale x 16 x i32> zeroinitializer, ptr [[TMP3]], align 64 9105bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[TMP6:%.*]] = call i32 @llvm.vector.reduce.or.nxv16i32(<vscale x 16 x i32> zeroinitializer) 9115bcb4c4dSPhilip Reames; ORIGINS-NEXT: [[_MSCMP:%.*]] = icmp ne i32 [[TMP6]], 0 9125bcb4c4dSPhilip Reames; ORIGINS-NEXT: br i1 [[_MSCMP]], label [[TMP7:%.*]], label [[TMP13:%.*]], !prof [[PROF0]] 9135bcb4c4dSPhilip Reames; ORIGINS: 7: 914*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP8:%.*]] = call i64 @llvm.vscale.i64() 915*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP9:%.*]] = mul i64 [[TMP8]], 64 916*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP10:%.*]] = add i64 [[TMP9]], 3 917*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP11:%.*]] = udiv i64 [[TMP10]], 4 9185bcb4c4dSPhilip Reames; ORIGINS-NEXT: br label [[DOTSPLIT:%.*]] 9195bcb4c4dSPhilip Reames; ORIGINS: .split: 920*3016c063SVitaly Buka; ORIGINS-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP7]] ], [ [[IV_NEXT:%.*]], [[DOTSPLIT]] ] 921*3016c063SVitaly Buka; ORIGINS-NEXT: [[TMP12:%.*]] = getelementptr i32, ptr [[TMP5]], i64 [[IV]] 9225bcb4c4dSPhilip Reames; ORIGINS-NEXT: store i32 0, ptr [[TMP12]], align 4 923*3016c063SVitaly Buka; ORIGINS-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1 924*3016c063SVitaly Buka; ORIGINS-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP11]] 9255bcb4c4dSPhilip Reames; ORIGINS-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]] 9265bcb4c4dSPhilip Reames; ORIGINS: .split.split: 9275bcb4c4dSPhilip Reames; ORIGINS-NEXT: br label [[TMP13]] 9285bcb4c4dSPhilip Reames; ORIGINS: 13: 9295bcb4c4dSPhilip Reames; ORIGINS-NEXT: store <vscale x 16 x i32> zeroinitializer, ptr [[P]], align 64 9305bcb4c4dSPhilip Reames; ORIGINS-NEXT: ret void 9315bcb4c4dSPhilip Reames; 9325bcb4c4dSPhilip Reames store <vscale x 16 x i32> zeroinitializer, ptr %p 9335bcb4c4dSPhilip Reames ret void 9345bcb4c4dSPhilip Reames} 935