brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.0 KiB · 4791f60 Raw
284 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 62; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefix=GFX9 %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 < %s | FileCheck -check-prefix=GFX11 %s4 5; Make sure that sub-dword arguments passed on the stack do not assert6 7define i32 @stack_arg_i1(<8 x i32>, <8 x i32>, <8 x i32>, <4 x i32>, <3 x i32>, i1 %badarg) #0 {8; GFX9-LABEL: stack_arg_i1:9; GFX9:       ; %bb.0:10; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; GFX9-NEXT:    buffer_load_ubyte v0, off, s[0:3], s3212; GFX9-NEXT:    s_waitcnt vmcnt(0)13; GFX9-NEXT:    s_setpc_b64 s[30:31]14;15; GFX11-LABEL: stack_arg_i1:16; GFX11:       ; %bb.0:17; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18; GFX11-NEXT:    scratch_load_u8 v0, off, s3219; GFX11-NEXT:    s_waitcnt vmcnt(0)20; GFX11-NEXT:    s_setpc_b64 s[30:31]21  %ext = zext i1 %badarg to i3222  ret i32 %ext23}24 25define i32 @stack_arg_i1_zeroext(<8 x i32>, <8 x i32>, <8 x i32>, <4 x i32>, <3 x i32>, i1 zeroext %badarg) #0 {26; GFX9-LABEL: stack_arg_i1_zeroext:27; GFX9:       ; %bb.0:28; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)29; GFX9-NEXT:    buffer_load_ubyte v0, off, s[0:3], s3230; GFX9-NEXT:    s_waitcnt vmcnt(0)31; GFX9-NEXT:    s_setpc_b64 s[30:31]32;33; GFX11-LABEL: stack_arg_i1_zeroext:34; GFX11:       ; %bb.0:35; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)36; GFX11-NEXT:    scratch_load_u8 v0, off, s3237; GFX11-NEXT:    s_waitcnt vmcnt(0)38; GFX11-NEXT:    s_setpc_b64 s[30:31]39  %ext = zext i1 %badarg to i3240  ret i32 %ext41}42 43define i32 @stack_arg_i1_signext(<8 x i32>, <8 x i32>, <8 x i32>, <4 x i32>, <3 x i32>, i1 signext %badarg) #0 {44; GFX9-LABEL: stack_arg_i1_signext:45; GFX9:       ; %bb.0:46; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)47; GFX9-NEXT:    buffer_load_ubyte v0, off, s[0:3], s3248; GFX9-NEXT:    s_waitcnt vmcnt(0)49; GFX9-NEXT:    v_bfe_i32 v0, v0, 0, 150; GFX9-NEXT:    s_setpc_b64 s[30:31]51;52; GFX11-LABEL: stack_arg_i1_signext:53; GFX11:       ; %bb.0:54; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)55; GFX11-NEXT:    scratch_load_u8 v0, off, s3256; GFX11-NEXT:    s_waitcnt vmcnt(0)57; GFX11-NEXT:    v_bfe_i32 v0, v0, 0, 158; GFX11-NEXT:    s_setpc_b64 s[30:31]59  %ext = sext i1 %badarg to i3260  ret i32 %ext61}62 63define i32 @stack_arg_i8(<8 x i32>, <8 x i32>, <8 x i32>, <4 x i32>, <3 x i32>, i8 %badarg) #0 {64; GFX9-LABEL: stack_arg_i8:65; GFX9:       ; %bb.0:66; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)67; GFX9-NEXT:    buffer_load_ubyte v0, off, s[0:3], s3268; GFX9-NEXT:    s_waitcnt vmcnt(0)69; GFX9-NEXT:    s_setpc_b64 s[30:31]70;71; GFX11-LABEL: stack_arg_i8:72; GFX11:       ; %bb.0:73; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)74; GFX11-NEXT:    scratch_load_u8 v0, off, s3275; GFX11-NEXT:    s_waitcnt vmcnt(0)76; GFX11-NEXT:    s_setpc_b64 s[30:31]77  %ext = zext i8 %badarg to i3278  ret i32 %ext79}80 81define i32 @stack_arg_i8_zeroext(<8 x i32>, <8 x i32>, <8 x i32>, <4 x i32>, <3 x i32>, i8 zeroext %badarg) #0 {82; GFX9-LABEL: stack_arg_i8_zeroext:83; GFX9:       ; %bb.0:84; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)85; GFX9-NEXT:    buffer_load_ushort v0, off, s[0:3], s3286; GFX9-NEXT:    s_waitcnt vmcnt(0)87; GFX9-NEXT:    s_setpc_b64 s[30:31]88;89; GFX11-LABEL: stack_arg_i8_zeroext:90; GFX11:       ; %bb.0:91; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)92; GFX11-NEXT:    scratch_load_u16 v0, off, s3293; GFX11-NEXT:    s_waitcnt vmcnt(0)94; GFX11-NEXT:    s_setpc_b64 s[30:31]95  %ext = zext i8 %badarg to i3296  ret i32 %ext97}98 99define i32 @stack_arg_i8_signext(<8 x i32>, <8 x i32>, <8 x i32>, <4 x i32>, <3 x i32>, i8 signext %badarg) #0 {100; GFX9-LABEL: stack_arg_i8_signext:101; GFX9:       ; %bb.0:102; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)103; GFX9-NEXT:    buffer_load_sshort v0, off, s[0:3], s32104; GFX9-NEXT:    s_waitcnt vmcnt(0)105; GFX9-NEXT:    s_setpc_b64 s[30:31]106;107; GFX11-LABEL: stack_arg_i8_signext:108; GFX11:       ; %bb.0:109; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)110; GFX11-NEXT:    scratch_load_i16 v0, off, s32111; GFX11-NEXT:    s_waitcnt vmcnt(0)112; GFX11-NEXT:    s_setpc_b64 s[30:31]113  %ext = sext i8 %badarg to i32114  ret i32 %ext115}116 117define i32 @stack_arg_i16(<8 x i32>, <8 x i32>, <8 x i32>, <4 x i32>, <3 x i32>, i16 %badarg) #0 {118; GFX9-LABEL: stack_arg_i16:119; GFX9:       ; %bb.0:120; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)121; GFX9-NEXT:    buffer_load_ushort v0, off, s[0:3], s32122; GFX9-NEXT:    s_waitcnt vmcnt(0)123; GFX9-NEXT:    s_setpc_b64 s[30:31]124;125; GFX11-LABEL: stack_arg_i16:126; GFX11:       ; %bb.0:127; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)128; GFX11-NEXT:    scratch_load_u16 v0, off, s32129; GFX11-NEXT:    s_waitcnt vmcnt(0)130; GFX11-NEXT:    s_setpc_b64 s[30:31]131  %ext = zext i16 %badarg to i32132  ret i32 %ext133}134 135define i32 @stack_arg_i16_zeroext(<8 x i32>, <8 x i32>, <8 x i32>, <4 x i32>, <3 x i32>, i16 zeroext %badarg) #0 {136; GFX9-LABEL: stack_arg_i16_zeroext:137; GFX9:       ; %bb.0:138; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)139; GFX9-NEXT:    buffer_load_ushort v0, off, s[0:3], s32140; GFX9-NEXT:    s_waitcnt vmcnt(0)141; GFX9-NEXT:    s_setpc_b64 s[30:31]142;143; GFX11-LABEL: stack_arg_i16_zeroext:144; GFX11:       ; %bb.0:145; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)146; GFX11-NEXT:    scratch_load_u16 v0, off, s32147; GFX11-NEXT:    s_waitcnt vmcnt(0)148; GFX11-NEXT:    s_setpc_b64 s[30:31]149  %ext = zext i16 %badarg to i32150  ret i32 %ext151}152 153define i32 @stack_arg_i16_signext(<8 x i32>, <8 x i32>, <8 x i32>, <4 x i32>, <3 x i32>, i16 signext %badarg) #0 {154; GFX9-LABEL: stack_arg_i16_signext:155; GFX9:       ; %bb.0:156; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)157; GFX9-NEXT:    buffer_load_sshort v0, off, s[0:3], s32158; GFX9-NEXT:    s_waitcnt vmcnt(0)159; GFX9-NEXT:    s_setpc_b64 s[30:31]160;161; GFX11-LABEL: stack_arg_i16_signext:162; GFX11:       ; %bb.0:163; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)164; GFX11-NEXT:    scratch_load_i16 v0, off, s32165; GFX11-NEXT:    s_waitcnt vmcnt(0)166; GFX11-NEXT:    s_setpc_b64 s[30:31]167  %ext = sext i16 %badarg to i32168  ret i32 %ext169}170 171define i32 @stack_arg_i7(<8 x i32>, <8 x i32>, <8 x i32>, <4 x i32>, <3 x i32>, i7 %badarg) #0 {172; GFX9-LABEL: stack_arg_i7:173; GFX9:       ; %bb.0:174; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)175; GFX9-NEXT:    buffer_load_ushort v0, off, s[0:3], s32176; GFX9-NEXT:    s_waitcnt vmcnt(0)177; GFX9-NEXT:    v_and_b32_e32 v0, 0x7f, v0178; GFX9-NEXT:    s_setpc_b64 s[30:31]179;180; GFX11-LABEL: stack_arg_i7:181; GFX11:       ; %bb.0:182; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)183; GFX11-NEXT:    scratch_load_u16 v0, off, s32184; GFX11-NEXT:    s_waitcnt vmcnt(0)185; GFX11-NEXT:    v_and_b32_e32 v0, 0x7f, v0186; GFX11-NEXT:    s_setpc_b64 s[30:31]187  %ext = zext i7 %badarg to i32188  ret i32 %ext189}190 191define i32 @stack_arg_i7_zeroext(<8 x i32>, <8 x i32>, <8 x i32>, <4 x i32>, <3 x i32>, i7 zeroext %badarg) #0 {192; GFX9-LABEL: stack_arg_i7_zeroext:193; GFX9:       ; %bb.0:194; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)195; GFX9-NEXT:    buffer_load_ushort v0, off, s[0:3], s32196; GFX9-NEXT:    s_waitcnt vmcnt(0)197; GFX9-NEXT:    s_setpc_b64 s[30:31]198;199; GFX11-LABEL: stack_arg_i7_zeroext:200; GFX11:       ; %bb.0:201; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)202; GFX11-NEXT:    scratch_load_u16 v0, off, s32203; GFX11-NEXT:    s_waitcnt vmcnt(0)204; GFX11-NEXT:    s_setpc_b64 s[30:31]205  %ext = zext i7 %badarg to i32206  ret i32 %ext207}208 209define i32 @stack_arg_i7_signext(<8 x i32>, <8 x i32>, <8 x i32>, <4 x i32>, <3 x i32>, i7 signext %badarg) #0 {210; GFX9-LABEL: stack_arg_i7_signext:211; GFX9:       ; %bb.0:212; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)213; GFX9-NEXT:    buffer_load_sshort v0, off, s[0:3], s32214; GFX9-NEXT:    s_waitcnt vmcnt(0)215; GFX9-NEXT:    s_setpc_b64 s[30:31]216;217; GFX11-LABEL: stack_arg_i7_signext:218; GFX11:       ; %bb.0:219; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)220; GFX11-NEXT:    scratch_load_i16 v0, off, s32221; GFX11-NEXT:    s_waitcnt vmcnt(0)222; GFX11-NEXT:    s_setpc_b64 s[30:31]223  %ext = sext i7 %badarg to i32224  ret i32 %ext225}226 227define i32 @stack_arg_i17(<8 x i32>, <8 x i32>, <8 x i32>, <4 x i32>, <3 x i32>, i17 %badarg) #0 {228; GFX9-LABEL: stack_arg_i17:229; GFX9:       ; %bb.0:230; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)231; GFX9-NEXT:    buffer_load_dword v0, off, s[0:3], s32232; GFX9-NEXT:    s_waitcnt vmcnt(0)233; GFX9-NEXT:    v_and_b32_e32 v0, 0x1ffff, v0234; GFX9-NEXT:    s_setpc_b64 s[30:31]235;236; GFX11-LABEL: stack_arg_i17:237; GFX11:       ; %bb.0:238; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)239; GFX11-NEXT:    scratch_load_b32 v0, off, s32240; GFX11-NEXT:    s_waitcnt vmcnt(0)241; GFX11-NEXT:    v_and_b32_e32 v0, 0x1ffff, v0242; GFX11-NEXT:    s_setpc_b64 s[30:31]243  %ext = zext i17 %badarg to i32244  ret i32 %ext245}246 247define i32 @stack_arg_i17_zeroext(<8 x i32>, <8 x i32>, <8 x i32>, <4 x i32>, <3 x i32>, i17 zeroext %badarg) #0 {248; GFX9-LABEL: stack_arg_i17_zeroext:249; GFX9:       ; %bb.0:250; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)251; GFX9-NEXT:    buffer_load_dword v0, off, s[0:3], s32252; GFX9-NEXT:    s_waitcnt vmcnt(0)253; GFX9-NEXT:    s_setpc_b64 s[30:31]254;255; GFX11-LABEL: stack_arg_i17_zeroext:256; GFX11:       ; %bb.0:257; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)258; GFX11-NEXT:    scratch_load_b32 v0, off, s32259; GFX11-NEXT:    s_waitcnt vmcnt(0)260; GFX11-NEXT:    s_setpc_b64 s[30:31]261  %ext = zext i17 %badarg to i32262  ret i32 %ext263}264 265define i32 @stack_arg_i17_signext(<8 x i32>, <8 x i32>, <8 x i32>, <4 x i32>, <3 x i32>, i17 signext %badarg) #0 {266; GFX9-LABEL: stack_arg_i17_signext:267; GFX9:       ; %bb.0:268; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)269; GFX9-NEXT:    buffer_load_dword v0, off, s[0:3], s32270; GFX9-NEXT:    s_waitcnt vmcnt(0)271; GFX9-NEXT:    s_setpc_b64 s[30:31]272;273; GFX11-LABEL: stack_arg_i17_signext:274; GFX11:       ; %bb.0:275; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)276; GFX11-NEXT:    scratch_load_b32 v0, off, s32277; GFX11-NEXT:    s_waitcnt vmcnt(0)278; GFX11-NEXT:    s_setpc_b64 s[30:31]279  %ext = sext i17 %badarg to i32280  ret i32 %ext281}282 283attributes #0 = { nounwind }284