375 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn -global-isel=0 -mcpu=tahiti < %s | FileCheck -check-prefixes=GFX6-SDAG %s3; RUN: llc -mtriple=amdgcn -global-isel=1 -mcpu=tahiti < %s | FileCheck -check-prefixes=GFX6-ISEL %s4; RUN: llc -mtriple=amdgcn -global-isel=0 -mcpu=fiji < %s | FileCheck -check-prefixes=GFX8-SDAG %s5; RUN: llc -mtriple=amdgcn -global-isel=1 -mcpu=fiji < %s | FileCheck -check-prefixes=GFX8-ISEL %s6; RUN: llc -mtriple=amdgcn -global-isel=0 -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9-SDAG %s7; RUN: llc -mtriple=amdgcn -global-isel=1 -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9-ISEL %s8; RUN: llc -mtriple=amdgcn -global-isel=0 -mcpu=gfx1030 < %s | FileCheck -check-prefixes=GFX10-SDAG %s9; RUN: llc -mtriple=amdgcn -global-isel=1 -mcpu=gfx1030 < %s | FileCheck -check-prefixes=GFX10-ISEL %s10; RUN: llc -mtriple=amdgcn -amdgpu-enable-delay-alu=0 -global-isel=0 -mcpu=gfx1100 < %s | FileCheck -check-prefixes=GFX11-SDAG %s11; RUN: llc -mtriple=amdgcn -amdgpu-enable-delay-alu=0 -global-isel=1 -mcpu=gfx1100 < %s | FileCheck -check-prefixes=GFX11-ISEL %s12 13declare i64 @llvm.get.fpenv.i64()14 15declare void @llvm.set.fpenv.i64(i64)16 17define i64 @get_fpenv() {18; GFX6-SDAG-LABEL: get_fpenv:19; GFX6-SDAG: ; %bb.0: ; %entry20; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21; GFX6-SDAG-NEXT: s_getreg_b32 s4, hwreg(HW_REG_TRAPSTS, 0, 5)22; GFX6-SDAG-NEXT: s_getreg_b32 s5, hwreg(HW_REG_MODE, 0, 23)23; GFX6-SDAG-NEXT: v_mov_b32_e32 v0, s524; GFX6-SDAG-NEXT: v_mov_b32_e32 v1, s425; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]26;27; GFX6-ISEL-LABEL: get_fpenv:28; GFX6-ISEL: ; %bb.0: ; %entry29; GFX6-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)30; GFX6-ISEL-NEXT: s_getreg_b32 s4, hwreg(HW_REG_MODE, 0, 23)31; GFX6-ISEL-NEXT: s_getreg_b32 s5, hwreg(HW_REG_TRAPSTS, 0, 5)32; GFX6-ISEL-NEXT: v_mov_b32_e32 v0, s433; GFX6-ISEL-NEXT: v_mov_b32_e32 v1, s534; GFX6-ISEL-NEXT: s_setpc_b64 s[30:31]35;36; GFX8-SDAG-LABEL: get_fpenv:37; GFX8-SDAG: ; %bb.0: ; %entry38; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)39; GFX8-SDAG-NEXT: s_getreg_b32 s4, hwreg(HW_REG_TRAPSTS, 0, 5)40; GFX8-SDAG-NEXT: s_getreg_b32 s5, hwreg(HW_REG_MODE, 0, 23)41; GFX8-SDAG-NEXT: v_mov_b32_e32 v0, s542; GFX8-SDAG-NEXT: v_mov_b32_e32 v1, s443; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]44;45; GFX8-ISEL-LABEL: get_fpenv:46; GFX8-ISEL: ; %bb.0: ; %entry47; GFX8-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)48; GFX8-ISEL-NEXT: s_getreg_b32 s4, hwreg(HW_REG_MODE, 0, 23)49; GFX8-ISEL-NEXT: s_getreg_b32 s5, hwreg(HW_REG_TRAPSTS, 0, 5)50; GFX8-ISEL-NEXT: v_mov_b32_e32 v0, s451; GFX8-ISEL-NEXT: v_mov_b32_e32 v1, s552; GFX8-ISEL-NEXT: s_setpc_b64 s[30:31]53;54; GFX9-SDAG-LABEL: get_fpenv:55; GFX9-SDAG: ; %bb.0: ; %entry56; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)57; GFX9-SDAG-NEXT: s_getreg_b32 s4, hwreg(HW_REG_TRAPSTS, 0, 5)58; GFX9-SDAG-NEXT: s_getreg_b32 s5, hwreg(HW_REG_MODE, 0, 23)59; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s560; GFX9-SDAG-NEXT: v_mov_b32_e32 v1, s461; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]62;63; GFX9-ISEL-LABEL: get_fpenv:64; GFX9-ISEL: ; %bb.0: ; %entry65; GFX9-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)66; GFX9-ISEL-NEXT: s_getreg_b32 s4, hwreg(HW_REG_MODE, 0, 23)67; GFX9-ISEL-NEXT: s_getreg_b32 s5, hwreg(HW_REG_TRAPSTS, 0, 5)68; GFX9-ISEL-NEXT: v_mov_b32_e32 v0, s469; GFX9-ISEL-NEXT: v_mov_b32_e32 v1, s570; GFX9-ISEL-NEXT: s_setpc_b64 s[30:31]71;72; GFX10-SDAG-LABEL: get_fpenv:73; GFX10-SDAG: ; %bb.0: ; %entry74; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)75; GFX10-SDAG-NEXT: s_getreg_b32 s4, hwreg(HW_REG_TRAPSTS, 0, 5)76; GFX10-SDAG-NEXT: s_getreg_b32 s5, hwreg(HW_REG_MODE, 0, 23)77; GFX10-SDAG-NEXT: v_mov_b32_e32 v1, s478; GFX10-SDAG-NEXT: v_mov_b32_e32 v0, s579; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]80;81; GFX10-ISEL-LABEL: get_fpenv:82; GFX10-ISEL: ; %bb.0: ; %entry83; GFX10-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)84; GFX10-ISEL-NEXT: s_getreg_b32 s4, hwreg(HW_REG_MODE, 0, 23)85; GFX10-ISEL-NEXT: s_getreg_b32 s5, hwreg(HW_REG_TRAPSTS, 0, 5)86; GFX10-ISEL-NEXT: v_mov_b32_e32 v0, s487; GFX10-ISEL-NEXT: v_mov_b32_e32 v1, s588; GFX10-ISEL-NEXT: s_setpc_b64 s[30:31]89;90; GFX11-SDAG-LABEL: get_fpenv:91; GFX11-SDAG: ; %bb.0: ; %entry92; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)93; GFX11-SDAG-NEXT: s_getreg_b32 s0, hwreg(HW_REG_TRAPSTS, 0, 5)94; GFX11-SDAG-NEXT: s_getreg_b32 s1, hwreg(HW_REG_MODE, 0, 23)95; GFX11-SDAG-NEXT: v_dual_mov_b32 v1, s0 :: v_dual_mov_b32 v0, s196; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]97;98; GFX11-ISEL-LABEL: get_fpenv:99; GFX11-ISEL: ; %bb.0: ; %entry100; GFX11-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)101; GFX11-ISEL-NEXT: s_getreg_b32 s0, hwreg(HW_REG_MODE, 0, 23)102; GFX11-ISEL-NEXT: s_getreg_b32 s1, hwreg(HW_REG_TRAPSTS, 0, 5)103; GFX11-ISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1104; GFX11-ISEL-NEXT: s_setpc_b64 s[30:31]105entry:106 %0 = call i64 @llvm.get.fpenv.i64()107 ret i64 %0108}109 110define void @set_fpenv(i64 %env) {111; GFX6-SDAG-LABEL: set_fpenv:112; GFX6-SDAG: ; %bb.0: ; %entry113; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)114; GFX6-SDAG-NEXT: v_readfirstlane_b32 s4, v0115; GFX6-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s4116; GFX6-SDAG-NEXT: v_readfirstlane_b32 s4, v1117; GFX6-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s4118; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]119;120; GFX6-ISEL-LABEL: set_fpenv:121; GFX6-ISEL: ; %bb.0: ; %entry122; GFX6-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)123; GFX6-ISEL-NEXT: v_readfirstlane_b32 s4, v0124; GFX6-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s4125; GFX6-ISEL-NEXT: v_readfirstlane_b32 s4, v1126; GFX6-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s4127; GFX6-ISEL-NEXT: s_setpc_b64 s[30:31]128;129; GFX8-SDAG-LABEL: set_fpenv:130; GFX8-SDAG: ; %bb.0: ; %entry131; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)132; GFX8-SDAG-NEXT: v_readfirstlane_b32 s4, v0133; GFX8-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s4134; GFX8-SDAG-NEXT: v_readfirstlane_b32 s4, v1135; GFX8-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s4136; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]137;138; GFX8-ISEL-LABEL: set_fpenv:139; GFX8-ISEL: ; %bb.0: ; %entry140; GFX8-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)141; GFX8-ISEL-NEXT: v_readfirstlane_b32 s4, v0142; GFX8-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s4143; GFX8-ISEL-NEXT: v_readfirstlane_b32 s4, v1144; GFX8-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s4145; GFX8-ISEL-NEXT: s_setpc_b64 s[30:31]146;147; GFX9-SDAG-LABEL: set_fpenv:148; GFX9-SDAG: ; %bb.0: ; %entry149; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)150; GFX9-SDAG-NEXT: v_readfirstlane_b32 s4, v0151; GFX9-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s4152; GFX9-SDAG-NEXT: v_readfirstlane_b32 s4, v1153; GFX9-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s4154; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]155;156; GFX9-ISEL-LABEL: set_fpenv:157; GFX9-ISEL: ; %bb.0: ; %entry158; GFX9-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)159; GFX9-ISEL-NEXT: v_readfirstlane_b32 s4, v0160; GFX9-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s4161; GFX9-ISEL-NEXT: v_readfirstlane_b32 s4, v1162; GFX9-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s4163; GFX9-ISEL-NEXT: s_setpc_b64 s[30:31]164;165; GFX10-SDAG-LABEL: set_fpenv:166; GFX10-SDAG: ; %bb.0: ; %entry167; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)168; GFX10-SDAG-NEXT: v_readfirstlane_b32 s4, v0169; GFX10-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s4170; GFX10-SDAG-NEXT: v_readfirstlane_b32 s4, v1171; GFX10-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s4172; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]173;174; GFX10-ISEL-LABEL: set_fpenv:175; GFX10-ISEL: ; %bb.0: ; %entry176; GFX10-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)177; GFX10-ISEL-NEXT: v_readfirstlane_b32 s4, v0178; GFX10-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s4179; GFX10-ISEL-NEXT: v_readfirstlane_b32 s4, v1180; GFX10-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s4181; GFX10-ISEL-NEXT: s_setpc_b64 s[30:31]182;183; GFX11-SDAG-LABEL: set_fpenv:184; GFX11-SDAG: ; %bb.0: ; %entry185; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)186; GFX11-SDAG-NEXT: v_readfirstlane_b32 s0, v0187; GFX11-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s0188; GFX11-SDAG-NEXT: v_readfirstlane_b32 s0, v1189; GFX11-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s0190; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]191;192; GFX11-ISEL-LABEL: set_fpenv:193; GFX11-ISEL: ; %bb.0: ; %entry194; GFX11-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)195; GFX11-ISEL-NEXT: v_readfirstlane_b32 s0, v0196; GFX11-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s0197; GFX11-ISEL-NEXT: v_readfirstlane_b32 s0, v1198; GFX11-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s0199; GFX11-ISEL-NEXT: s_setpc_b64 s[30:31]200entry:201 call void @llvm.set.fpenv.i64(i64 %env)202 ret void203}204 205define void @set_fpenv_constant() {206; GFX6-SDAG-LABEL: set_fpenv_constant:207; GFX6-SDAG: ; %bb.0: ; %entry208; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)209; GFX6-SDAG-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 0, 23), 0210; GFX6-SDAG-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_TRAPSTS, 0, 5), 0211; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]212;213; GFX6-ISEL-LABEL: set_fpenv_constant:214; GFX6-ISEL: ; %bb.0: ; %entry215; GFX6-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)216; GFX6-ISEL-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 0, 23), 0217; GFX6-ISEL-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_TRAPSTS, 0, 5), 0218; GFX6-ISEL-NEXT: s_setpc_b64 s[30:31]219;220; GFX8-SDAG-LABEL: set_fpenv_constant:221; GFX8-SDAG: ; %bb.0: ; %entry222; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)223; GFX8-SDAG-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 0, 23), 0224; GFX8-SDAG-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_TRAPSTS, 0, 5), 0225; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]226;227; GFX8-ISEL-LABEL: set_fpenv_constant:228; GFX8-ISEL: ; %bb.0: ; %entry229; GFX8-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)230; GFX8-ISEL-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 0, 23), 0231; GFX8-ISEL-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_TRAPSTS, 0, 5), 0232; GFX8-ISEL-NEXT: s_setpc_b64 s[30:31]233;234; GFX9-SDAG-LABEL: set_fpenv_constant:235; GFX9-SDAG: ; %bb.0: ; %entry236; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)237; GFX9-SDAG-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 0, 23), 0238; GFX9-SDAG-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_TRAPSTS, 0, 5), 0239; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]240;241; GFX9-ISEL-LABEL: set_fpenv_constant:242; GFX9-ISEL: ; %bb.0: ; %entry243; GFX9-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)244; GFX9-ISEL-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 0, 23), 0245; GFX9-ISEL-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_TRAPSTS, 0, 5), 0246; GFX9-ISEL-NEXT: s_setpc_b64 s[30:31]247;248; GFX10-SDAG-LABEL: set_fpenv_constant:249; GFX10-SDAG: ; %bb.0: ; %entry250; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)251; GFX10-SDAG-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 0, 23), 0252; GFX10-SDAG-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_TRAPSTS, 0, 5), 0253; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]254;255; GFX10-ISEL-LABEL: set_fpenv_constant:256; GFX10-ISEL: ; %bb.0: ; %entry257; GFX10-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)258; GFX10-ISEL-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 0, 23), 0259; GFX10-ISEL-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_TRAPSTS, 0, 5), 0260; GFX10-ISEL-NEXT: s_setpc_b64 s[30:31]261;262; GFX11-SDAG-LABEL: set_fpenv_constant:263; GFX11-SDAG: ; %bb.0: ; %entry264; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)265; GFX11-SDAG-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 0, 23), 0266; GFX11-SDAG-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_TRAPSTS, 0, 5), 0267; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]268;269; GFX11-ISEL-LABEL: set_fpenv_constant:270; GFX11-ISEL: ; %bb.0: ; %entry271; GFX11-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)272; GFX11-ISEL-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 0, 23), 0273; GFX11-ISEL-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_TRAPSTS, 0, 5), 0274; GFX11-ISEL-NEXT: s_setpc_b64 s[30:31]275entry:276 call void @llvm.set.fpenv.i64(i64 0)277 ret void278}279 280define void @get_set_fpenv() {281; GFX6-SDAG-LABEL: get_set_fpenv:282; GFX6-SDAG: ; %bb.0: ; %entry283; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)284; GFX6-SDAG-NEXT: s_getreg_b32 s4, hwreg(HW_REG_TRAPSTS, 0, 5)285; GFX6-SDAG-NEXT: s_getreg_b32 s5, hwreg(HW_REG_MODE, 0, 23)286; GFX6-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s5287; GFX6-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s4288; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]289;290; GFX6-ISEL-LABEL: get_set_fpenv:291; GFX6-ISEL: ; %bb.0: ; %entry292; GFX6-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)293; GFX6-ISEL-NEXT: s_getreg_b32 s4, hwreg(HW_REG_MODE, 0, 23)294; GFX6-ISEL-NEXT: s_getreg_b32 s5, hwreg(HW_REG_TRAPSTS, 0, 5)295; GFX6-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s4296; GFX6-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s5297; GFX6-ISEL-NEXT: s_setpc_b64 s[30:31]298;299; GFX8-SDAG-LABEL: get_set_fpenv:300; GFX8-SDAG: ; %bb.0: ; %entry301; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)302; GFX8-SDAG-NEXT: s_getreg_b32 s4, hwreg(HW_REG_TRAPSTS, 0, 5)303; GFX8-SDAG-NEXT: s_getreg_b32 s5, hwreg(HW_REG_MODE, 0, 23)304; GFX8-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s5305; GFX8-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s4306; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]307;308; GFX8-ISEL-LABEL: get_set_fpenv:309; GFX8-ISEL: ; %bb.0: ; %entry310; GFX8-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)311; GFX8-ISEL-NEXT: s_getreg_b32 s4, hwreg(HW_REG_MODE, 0, 23)312; GFX8-ISEL-NEXT: s_getreg_b32 s5, hwreg(HW_REG_TRAPSTS, 0, 5)313; GFX8-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s4314; GFX8-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s5315; GFX8-ISEL-NEXT: s_setpc_b64 s[30:31]316;317; GFX9-SDAG-LABEL: get_set_fpenv:318; GFX9-SDAG: ; %bb.0: ; %entry319; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)320; GFX9-SDAG-NEXT: s_getreg_b32 s4, hwreg(HW_REG_TRAPSTS, 0, 5)321; GFX9-SDAG-NEXT: s_getreg_b32 s5, hwreg(HW_REG_MODE, 0, 23)322; GFX9-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s5323; GFX9-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s4324; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]325;326; GFX9-ISEL-LABEL: get_set_fpenv:327; GFX9-ISEL: ; %bb.0: ; %entry328; GFX9-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)329; GFX9-ISEL-NEXT: s_getreg_b32 s4, hwreg(HW_REG_MODE, 0, 23)330; GFX9-ISEL-NEXT: s_getreg_b32 s5, hwreg(HW_REG_TRAPSTS, 0, 5)331; GFX9-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s4332; GFX9-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s5333; GFX9-ISEL-NEXT: s_setpc_b64 s[30:31]334;335; GFX10-SDAG-LABEL: get_set_fpenv:336; GFX10-SDAG: ; %bb.0: ; %entry337; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)338; GFX10-SDAG-NEXT: s_getreg_b32 s4, hwreg(HW_REG_TRAPSTS, 0, 5)339; GFX10-SDAG-NEXT: s_getreg_b32 s5, hwreg(HW_REG_MODE, 0, 23)340; GFX10-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s5341; GFX10-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s4342; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]343;344; GFX10-ISEL-LABEL: get_set_fpenv:345; GFX10-ISEL: ; %bb.0: ; %entry346; GFX10-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)347; GFX10-ISEL-NEXT: s_getreg_b32 s4, hwreg(HW_REG_MODE, 0, 23)348; GFX10-ISEL-NEXT: s_getreg_b32 s5, hwreg(HW_REG_TRAPSTS, 0, 5)349; GFX10-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s4350; GFX10-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s5351; GFX10-ISEL-NEXT: s_setpc_b64 s[30:31]352;353; GFX11-SDAG-LABEL: get_set_fpenv:354; GFX11-SDAG: ; %bb.0: ; %entry355; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)356; GFX11-SDAG-NEXT: s_getreg_b32 s0, hwreg(HW_REG_TRAPSTS, 0, 5)357; GFX11-SDAG-NEXT: s_getreg_b32 s1, hwreg(HW_REG_MODE, 0, 23)358; GFX11-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s1359; GFX11-SDAG-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s0360; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]361;362; GFX11-ISEL-LABEL: get_set_fpenv:363; GFX11-ISEL: ; %bb.0: ; %entry364; GFX11-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)365; GFX11-ISEL-NEXT: s_getreg_b32 s0, hwreg(HW_REG_MODE, 0, 23)366; GFX11-ISEL-NEXT: s_getreg_b32 s1, hwreg(HW_REG_TRAPSTS, 0, 5)367; GFX11-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_MODE, 0, 23), s0368; GFX11-ISEL-NEXT: s_setreg_b32 hwreg(HW_REG_TRAPSTS, 0, 5), s1369; GFX11-ISEL-NEXT: s_setpc_b64 s[30:31]370entry:371 %0 = call i64 @llvm.get.fpenv.i64()372 call void @llvm.set.fpenv.i64(i64 %0)373 ret void374}375