1; RUN: llc -mtriple=powerpc64-unknown-aix-xcoff -verify-machineinstrs \ 2; RUN: -mcpu=pwr4 -mattr=-altivec -stop-after=prologepilog < %s | \ 3; RUN: FileCheck --check-prefix=MIR64 %s 4 5; RUN: llc -mtriple=powerpc64-unknown-aix-xcoff -verify-machineinstrs \ 6; RUN: -mcpu=pwr4 -mattr=-altivec < %s | FileCheck --check-prefix=ASM64 %s 7 8; RUN: llc -mtriple=powerpc-unknown-aix-xcoff -verify-machineinstrs \ 9; RUN: -mcpu=pwr4 -mattr=-altivec -stop-after=prologepilog < %s | \ 10; RUN: FileCheck --check-prefix=MIR32 %s 11 12; RUN: llc -mtriple=powerpc-unknown-aix-xcoff -verify-machineinstrs \ 13; RUN: -mcpu=pwr4 -mattr=-altivec < %s | FileCheck --check-prefix=ASM32 %s 14 15define dso_local signext i32 @gprs_only(i32 signext %i) { 16entry: 17 call void asm sideeffect "", "~{r16},~{r22},~{r30}"() 18 ret i32 %i 19} 20 21; MIR64: name: gprs_only 22; MIR64-LABEL: fixedStack: 23; MIR64-NEXT: - { id: 0, type: spill-slot, offset: -8, size: 8, alignment: 8, stack-id: default, 24; MIR64-NEXT: callee-saved-register: '$x31', callee-saved-restored: true, debug-info-variable: '', 25; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 26; MIR64-NEXT: - { id: 1, type: spill-slot, offset: -16, size: 8, alignment: 16, stack-id: default, 27; MIR64-NEXT: callee-saved-register: '$x30', callee-saved-restored: true, debug-info-variable: '', 28; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 29; MIR64-NEXT: - { id: 2, type: spill-slot, offset: -24, size: 8, alignment: 8, stack-id: default, 30; MIR64-NEXT: callee-saved-register: '$x29', callee-saved-restored: true, debug-info-variable: '', 31; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 32; MIR64-NEXT: - { id: 3, type: spill-slot, offset: -32, size: 8, alignment: 16, stack-id: default, 33; MIR64-NEXT: callee-saved-register: '$x28', callee-saved-restored: true, debug-info-variable: '', 34; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 35; MIR64-NEXT: - { id: 4, type: spill-slot, offset: -40, size: 8, alignment: 8, stack-id: default, 36; MIR64-NEXT: callee-saved-register: '$x27', callee-saved-restored: true, debug-info-variable: '', 37; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 38; MIR64-NEXT: - { id: 5, type: spill-slot, offset: -48, size: 8, alignment: 16, stack-id: default, 39; MIR64-NEXT: callee-saved-register: '$x26', callee-saved-restored: true, debug-info-variable: '', 40; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 41; MIR64-NEXT: - { id: 6, type: spill-slot, offset: -56, size: 8, alignment: 8, stack-id: default, 42; MIR64-NEXT: callee-saved-register: '$x25', callee-saved-restored: true, debug-info-variable: '', 43; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 44; MIR64-NEXT: - { id: 7, type: spill-slot, offset: -64, size: 8, alignment: 16, stack-id: default, 45; MIR64-NEXT: callee-saved-register: '$x24', callee-saved-restored: true, debug-info-variable: '', 46; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 47; MIR64-NEXT: - { id: 8, type: spill-slot, offset: -72, size: 8, alignment: 8, stack-id: default, 48; MIR64-NEXT: callee-saved-register: '$x23', callee-saved-restored: true, debug-info-variable: '', 49; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 50; MIR64-NEXT: - { id: 9, type: spill-slot, offset: -80, size: 8, alignment: 16, stack-id: default, 51; MIR64-NEXT: callee-saved-register: '$x22', callee-saved-restored: true, debug-info-variable: '', 52; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 53; MIR64-NEXT: - { id: 10, type: spill-slot, offset: -88, size: 8, alignment: 8, stack-id: default, 54; MIR64-NEXT: callee-saved-register: '$x21', callee-saved-restored: true, debug-info-variable: '', 55; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 56; MIR64-NEXT: - { id: 11, type: spill-slot, offset: -96, size: 8, alignment: 16, stack-id: default, 57; MIR64-NEXT: callee-saved-register: '$x20', callee-saved-restored: true, debug-info-variable: '', 58; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 59; MIR64-NEXT: - { id: 12, type: spill-slot, offset: -104, size: 8, alignment: 8, stack-id: default, 60; MIR64-NEXT: callee-saved-register: '$x19', callee-saved-restored: true, debug-info-variable: '', 61; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 62; MIR64-NEXT: - { id: 13, type: spill-slot, offset: -112, size: 8, alignment: 16, stack-id: default, 63; MIR64-NEXT: callee-saved-register: '$x18', callee-saved-restored: true, debug-info-variable: '', 64; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 65; MIR64-NEXT: - { id: 14, type: spill-slot, offset: -120, size: 8, alignment: 8, stack-id: default, 66; MIR64-NEXT: callee-saved-register: '$x17', callee-saved-restored: true, debug-info-variable: '', 67; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 68; MIR64-NEXT: - { id: 15, type: spill-slot, offset: -128, size: 8, alignment: 16, stack-id: default, 69; MIR64-NEXT: callee-saved-register: '$x16', callee-saved-restored: true, debug-info-variable: '', 70; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 71; MIR64-NEXT: stack: [] 72 73; MIR32: name: gprs_only 74; MIR32-LABEL: fixedStack: 75; MIR32-NEXT: - { id: 0, type: spill-slot, offset: -4, size: 4, alignment: 4, stack-id: default, 76; MIR32-NEXT: callee-saved-register: '$r31', callee-saved-restored: true, debug-info-variable: '', 77; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 78; MIR32-NEXT: - { id: 1, type: spill-slot, offset: -8, size: 4, alignment: 8, stack-id: default, 79; MIR32-NEXT: callee-saved-register: '$r30', callee-saved-restored: true, debug-info-variable: '', 80; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 81; MIR32-NEXT: - { id: 2, type: spill-slot, offset: -12, size: 4, alignment: 4, stack-id: default, 82; MIR32-NEXT: callee-saved-register: '$r29', callee-saved-restored: true, debug-info-variable: '', 83; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 84; MIR32-NEXT: - { id: 3, type: spill-slot, offset: -16, size: 4, alignment: 16, stack-id: default, 85; MIR32-NEXT: callee-saved-register: '$r28', callee-saved-restored: true, debug-info-variable: '', 86; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 87; MIR32-NEXT: - { id: 4, type: spill-slot, offset: -20, size: 4, alignment: 4, stack-id: default, 88; MIR32-NEXT: callee-saved-register: '$r27', callee-saved-restored: true, debug-info-variable: '', 89; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 90; MIR32-NEXT: - { id: 5, type: spill-slot, offset: -24, size: 4, alignment: 8, stack-id: default, 91; MIR32-NEXT: callee-saved-register: '$r26', callee-saved-restored: true, debug-info-variable: '', 92; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 93; MIR32-NEXT: - { id: 6, type: spill-slot, offset: -28, size: 4, alignment: 4, stack-id: default, 94; MIR32-NEXT: callee-saved-register: '$r25', callee-saved-restored: true, debug-info-variable: '', 95; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 96; MIR32-NEXT: - { id: 7, type: spill-slot, offset: -32, size: 4, alignment: 16, stack-id: default, 97; MIR32-NEXT: callee-saved-register: '$r24', callee-saved-restored: true, debug-info-variable: '', 98; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 99; MIR32-NEXT: - { id: 8, type: spill-slot, offset: -36, size: 4, alignment: 4, stack-id: default, 100; MIR32-NEXT: callee-saved-register: '$r23', callee-saved-restored: true, debug-info-variable: '', 101; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 102; MIR32-NEXT: - { id: 9, type: spill-slot, offset: -40, size: 4, alignment: 8, stack-id: default, 103; MIR32-NEXT: callee-saved-register: '$r22', callee-saved-restored: true, debug-info-variable: '', 104; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 105; MIR32-NEXT: - { id: 10, type: spill-slot, offset: -44, size: 4, alignment: 4, stack-id: default, 106; MIR32-NEXT: callee-saved-register: '$r21', callee-saved-restored: true, debug-info-variable: '', 107; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 108; MIR32-NEXT: - { id: 11, type: spill-slot, offset: -48, size: 4, alignment: 16, stack-id: default, 109; MIR32-NEXT: callee-saved-register: '$r20', callee-saved-restored: true, debug-info-variable: '', 110; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 111; MIR32-NEXT: - { id: 12, type: spill-slot, offset: -52, size: 4, alignment: 4, stack-id: default, 112; MIR32-NEXT: callee-saved-register: '$r19', callee-saved-restored: true, debug-info-variable: '', 113; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 114; MIR32-NEXT: - { id: 13, type: spill-slot, offset: -56, size: 4, alignment: 8, stack-id: default, 115; MIR32-NEXT: callee-saved-register: '$r18', callee-saved-restored: true, debug-info-variable: '', 116; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 117; MIR32-NEXT: - { id: 14, type: spill-slot, offset: -60, size: 4, alignment: 4, stack-id: default, 118; MIR32-NEXT: callee-saved-register: '$r17', callee-saved-restored: true, debug-info-variable: '', 119; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 120; MIR32-NEXT: - { id: 15, type: spill-slot, offset: -64, size: 4, alignment: 16, stack-id: default, 121; MIR32-NEXT: callee-saved-register: '$r16', callee-saved-restored: true, debug-info-variable: '', 122; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 123; MIR32-NEXT: stack: [] 124 125 126; MIR64: liveins: $x3, $x16, $x17, $x18, $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $x29, $x30, $x31 127 128; MIR64-DAG: STD killed $x16, -128, $x1 :: (store (s64) into %fixed-stack.15, align 16) 129; MIR64-DAG: STD killed $x17, -120, $x1 :: (store (s64) into %fixed-stack.14) 130; MIR64-DAG: STD killed $x18, -112, $x1 :: (store (s64) into %fixed-stack.13, align 16) 131; MIR64-DAG: STD killed $x19, -104, $x1 :: (store (s64) into %fixed-stack.12) 132; MIR64-DAG: STD killed $x20, -96, $x1 :: (store (s64) into %fixed-stack.11, align 16) 133; MIR64-DAG: STD killed $x21, -88, $x1 :: (store (s64) into %fixed-stack.10) 134; MIR64-DAG: STD killed $x22, -80, $x1 :: (store (s64) into %fixed-stack.9, align 16) 135; MIR64-DAG: STD killed $x23, -72, $x1 :: (store (s64) into %fixed-stack.8) 136; MIR64-DAG: STD killed $x24, -64, $x1 :: (store (s64) into %fixed-stack.7, align 16) 137; MIR64-DAG: STD killed $x25, -56, $x1 :: (store (s64) into %fixed-stack.6) 138; MIR64-DAG: STD killed $x26, -48, $x1 :: (store (s64) into %fixed-stack.5, align 16) 139; MIR64-DAG: STD killed $x27, -40, $x1 :: (store (s64) into %fixed-stack.4) 140; MIR64-DAG: STD killed $x28, -32, $x1 :: (store (s64) into %fixed-stack.3, align 16) 141; MIR64-DAG: STD killed $x29, -24, $x1 :: (store (s64) into %fixed-stack.2) 142; MIR64-DAG: STD killed $x30, -16, $x1 :: (store (s64) into %fixed-stack.1, align 16) 143; MIR64-DAG: STD killed $x31, -8, $x1 :: (store (s64) into %fixed-stack.0) 144 145; MIR64: INLINEASM 146 147 148; MIR64-DAG: $x31 = LD -8, $x1 :: (load (s64) from %fixed-stack.0) 149; MIR64-DAG: $x30 = LD -16, $x1 :: (load (s64) from %fixed-stack.1, align 16) 150; MIR64-DAG: $x29 = LD -24, $x1 :: (load (s64) from %fixed-stack.2) 151; MIR64-DAG: $x28 = LD -32, $x1 :: (load (s64) from %fixed-stack.3, align 16) 152; MIR64-DAG: $x27 = LD -40, $x1 :: (load (s64) from %fixed-stack.4) 153; MIR64-DAG: $x26 = LD -48, $x1 :: (load (s64) from %fixed-stack.5, align 16) 154; MIR64-DAG: $x25 = LD -56, $x1 :: (load (s64) from %fixed-stack.6) 155; MIR64-DAG: $x24 = LD -64, $x1 :: (load (s64) from %fixed-stack.7, align 16) 156; MIR64-DAG: $x23 = LD -72, $x1 :: (load (s64) from %fixed-stack.8) 157; MIR64-DAG: $x22 = LD -80, $x1 :: (load (s64) from %fixed-stack.9, align 16) 158; MIR64-DAG: $x21 = LD -88, $x1 :: (load (s64) from %fixed-stack.10) 159; MIR64-DAG: $x20 = LD -96, $x1 :: (load (s64) from %fixed-stack.11, align 16) 160; MIR64-DAG: $x19 = LD -104, $x1 :: (load (s64) from %fixed-stack.12) 161; MIR64-DAG: $x18 = LD -112, $x1 :: (load (s64) from %fixed-stack.13, align 16) 162; MIR64-DAG: $x17 = LD -120, $x1 :: (load (s64) from %fixed-stack.14) 163; MIR64-DAG: $x16 = LD -128, $x1 :: (load (s64) from %fixed-stack.15, align 16) 164; MIR64: BLR8 implicit $lr8, implicit $rm, implicit $x3 165 166 167; MIR32: liveins: $r3, $r16, $r17, $r18, $r19, $r20, $r21, $r22, $r23, $r24, $r25, $r26, $r27, $r28, $r29, $r30, $r31 168 169; MIR32-DAG: STW killed $r16, -64, $r1 :: (store (s32) into %fixed-stack.15, align 16) 170; MIR32-DAG: STW killed $r17, -60, $r1 :: (store (s32) into %fixed-stack.14) 171; MIR32-DAG: STW killed $r18, -56, $r1 :: (store (s32) into %fixed-stack.13, align 8) 172; MIR32-DAG: STW killed $r19, -52, $r1 :: (store (s32) into %fixed-stack.12) 173; MIR32-DAG: STW killed $r20, -48, $r1 :: (store (s32) into %fixed-stack.11, align 16) 174; MIR32-DAG: STW killed $r21, -44, $r1 :: (store (s32) into %fixed-stack.10) 175; MIR32-DAG: STW killed $r22, -40, $r1 :: (store (s32) into %fixed-stack.9, align 8) 176; MIR32-DAG: STW killed $r23, -36, $r1 :: (store (s32) into %fixed-stack.8) 177; MIR32-DAG: STW killed $r24, -32, $r1 :: (store (s32) into %fixed-stack.7, align 16) 178; MIR32-DAG: STW killed $r25, -28, $r1 :: (store (s32) into %fixed-stack.6) 179; MIR32-DAG: STW killed $r26, -24, $r1 :: (store (s32) into %fixed-stack.5, align 8) 180; MIR32-DAG: STW killed $r27, -20, $r1 :: (store (s32) into %fixed-stack.4) 181; MIR32-DAG: STW killed $r28, -16, $r1 :: (store (s32) into %fixed-stack.3, align 16) 182; MIR32-DAG: STW killed $r29, -12, $r1 :: (store (s32) into %fixed-stack.2) 183; MIR32-DAG: STW killed $r30, -8, $r1 :: (store (s32) into %fixed-stack.1, align 8) 184; MIR32-DAG: STW killed $r31, -4, $r1 :: (store (s32) into %fixed-stack.0) 185 186; MIR32: INLINEASM 187 188; MIR32-DAG: $r31 = LWZ -4, $r1 :: (load (s32) from %fixed-stack.0) 189; MIR32-DAG: $r30 = LWZ -8, $r1 :: (load (s32) from %fixed-stack.1, align 8) 190; MIR32-DAG: $r29 = LWZ -12, $r1 :: (load (s32) from %fixed-stack.2) 191; MIR32-DAG: $r28 = LWZ -16, $r1 :: (load (s32) from %fixed-stack.3, align 16) 192; MIR32-DAG: $r27 = LWZ -20, $r1 :: (load (s32) from %fixed-stack.4) 193; MIR32-DAG: $r26 = LWZ -24, $r1 :: (load (s32) from %fixed-stack.5, align 8) 194; MIR32-DAG: $r25 = LWZ -28, $r1 :: (load (s32) from %fixed-stack.6) 195; MIR32-DAG: $r24 = LWZ -32, $r1 :: (load (s32) from %fixed-stack.7, align 16) 196; MIR32-DAG: $r23 = LWZ -36, $r1 :: (load (s32) from %fixed-stack.8) 197; MIR32-DAG: $r22 = LWZ -40, $r1 :: (load (s32) from %fixed-stack.9, align 8) 198; MIR32-DAG: $r21 = LWZ -44, $r1 :: (load (s32) from %fixed-stack.10) 199; MIR32-DAG: $r20 = LWZ -48, $r1 :: (load (s32) from %fixed-stack.11, align 16) 200; MIR32-DAG: $r19 = LWZ -52, $r1 :: (load (s32) from %fixed-stack.12) 201; MIR32-DAG: $r18 = LWZ -56, $r1 :: (load (s32) from %fixed-stack.13, align 8) 202; MIR32-DAG: $r17 = LWZ -60, $r1 :: (load (s32) from %fixed-stack.14) 203; MIR32-DAG: $r16 = LWZ -64, $r1 :: (load (s32) from %fixed-stack.15, align 16) 204; MIR32: BLR implicit $lr, implicit $rm, implicit $r3 205 206 207; ASM64-LABEL: .gprs_only: 208; ASM64-DAG: std 16, -128(1) # 8-byte Folded Spill 209; ASM64-DAG: std 17, -120(1) # 8-byte Folded Spill 210; ASM64-DAG: std 18, -112(1) # 8-byte Folded Spill 211; ASM64-DAG: std 19, -104(1) # 8-byte Folded Spill 212; ASM64-DAG: std 20, -96(1) # 8-byte Folded Spill 213; ASM64-DAG: std 21, -88(1) # 8-byte Folded Spill 214; ASM64-DAG: std 22, -80(1) # 8-byte Folded Spill 215; ASM64-DAG: std 23, -72(1) # 8-byte Folded Spill 216; ASM64-DAG: std 24, -64(1) # 8-byte Folded Spill 217; ASM64-DAG: std 25, -56(1) # 8-byte Folded Spill 218; ASM64-DAG: std 26, -48(1) # 8-byte Folded Spill 219; ASM64-DAG: std 27, -40(1) # 8-byte Folded Spill 220; ASM64-DAG: std 28, -32(1) # 8-byte Folded Spill 221; ASM64-DAG: std 29, -24(1) # 8-byte Folded Spill 222; ASM64-DAG: std 30, -16(1) # 8-byte Folded Spill 223; ASM64-DAG: std 31, -8(1) # 8-byte Folded Spill 224; ASM64: #APP 225; AMS64-DAG: ld 31, -8(1) # 8-byte Folded Reload 226; ASM64-DAG: ld 30, -16(1) # 8-byte Folded Reload 227; ASM64-DAG: ld 29, -24(1) # 8-byte Folded Reload 228; ASM64-DAG: ld 28, -32(1) # 8-byte Folded Reload 229; ASM64-DAG: ld 27, -40(1) # 8-byte Folded Reload 230; ASM64-DAG: ld 26, -48(1) # 8-byte Folded Reload 231; ASM64-DAG: ld 25, -56(1) # 8-byte Folded Reload 232; ASM64-DAG: ld 24, -64(1) # 8-byte Folded Reload 233; ASM64-DAG: ld 23, -72(1) # 8-byte Folded Reload 234; ASM64-DAG: ld 22, -80(1) # 8-byte Folded Reload 235; ASM64-DAG: ld 21, -88(1) # 8-byte Folded Reload 236; ASM64-DAG: ld 20, -96(1) # 8-byte Folded Reload 237; ASM64-DAG: ld 19, -104(1) # 8-byte Folded Reload 238; ASM64-DAG: ld 18, -112(1) # 8-byte Folded Reload 239; ASM64-DAG: ld 17, -120(1) # 8-byte Folded Reload 240; ASM64-DAG: ld 16, -128(1) # 8-byte Folded Reload 241; ASM64: blr 242 243; ASM32-LABEL: .gprs_only: 244; ASM32-DAG: stw 16, -64(1) # 4-byte Folded Spill 245; ASM32-DAG: stw 17, -60(1) # 4-byte Folded Spill 246; ASM32-DAG: stw 18, -56(1) # 4-byte Folded Spill 247; ASM32-DAG: stw 19, -52(1) # 4-byte Folded Spill 248; ASM32-DAG: stw 20, -48(1) # 4-byte Folded Spill 249; ASM32-DAG: stw 21, -44(1) # 4-byte Folded Spill 250; ASM32-DAG: stw 22, -40(1) # 4-byte Folded Spill 251; ASM32-DAG: stw 23, -36(1) # 4-byte Folded Spill 252; ASM32-DAG: stw 24, -32(1) # 4-byte Folded Spill 253; ASM32-DAG: stw 25, -28(1) # 4-byte Folded Spill 254; ASM32-DAG: stw 26, -24(1) # 4-byte Folded Spill 255; ASM32-DAG: stw 27, -20(1) # 4-byte Folded Spill 256; ASM32-DAG: stw 28, -16(1) # 4-byte Folded Spill 257; ASM32-DAG: stw 29, -12(1) # 4-byte Folded Spill 258; ASM32-DAG: stw 30, -8(1) # 4-byte Folded Spill 259; ASM32-DAG: stw 31, -4(1) # 4-byte Folded Spill 260; ASM32: #APP 261; ASM32-DAG: lwz 31, -4(1) # 4-byte Folded Reload 262; ASM32-DAG: lwz 30, -8(1) # 4-byte Folded Reload 263; ASM32-DAG: lwz 29, -12(1) # 4-byte Folded Reload 264; ASM32-DAG: lwz 28, -16(1) # 4-byte Folded Reload 265; ASM32-DAG: lwz 27, -20(1) # 4-byte Folded Reload 266; ASM32-DAG: lwz 26, -24(1) # 4-byte Folded Reload 267; ASM32-DAG: lwz 25, -28(1) # 4-byte Folded Reload 268; ASM32-DAG: lwz 24, -32(1) # 4-byte Folded Reload 269; ASM32-DAG: lwz 23, -36(1) # 4-byte Folded Reload 270; ASM32-DAG: lwz 22, -40(1) # 4-byte Folded Reload 271; ASM32-DAG: lwz 21, -44(1) # 4-byte Folded Reload 272; ASM32-DAG: lwz 20, -48(1) # 4-byte Folded Reload 273; ASM32-DAG: lwz 19, -52(1) # 4-byte Folded Reload 274; ASM32-DAG: lwz 18, -56(1) # 4-byte Folded Reload 275; ASM32-DAG: lwz 17, -60(1) # 4-byte Folded Reload 276; ASM32-DAG: lwz 16, -64(1) # 4-byte Folded Reload 277; ASM32-DAG: blr 278 279 280declare double @dummy(i32 signext); 281 282define dso_local double @fprs_and_gprs(i32 signext %i) { 283 call void asm sideeffect "", "~{r13},~{r14},~{r25},~{r31},~{f14},~{f19},~{f21},~{f31}"() 284 %result = call double @dummy(i32 signext %i) 285 ret double %result 286} 287 288; MIR64: name: fprs_and_gprs 289; MIR64-LABEL: fixedStack: 290; MIR64-NEXT: - { id: 0, type: spill-slot, offset: -8, size: 8, alignment: 8, stack-id: default, 291; MIR64-NEXT: callee-saved-register: '$f31', callee-saved-restored: true, debug-info-variable: '', 292; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 293; MIR64-NEXT: - { id: 1, type: spill-slot, offset: -16, size: 8, alignment: 16, stack-id: default, 294; MIR64-NEXT: callee-saved-register: '$f30', callee-saved-restored: true, debug-info-variable: '', 295; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 296; MIR64-NEXT: - { id: 2, type: spill-slot, offset: -24, size: 8, alignment: 8, stack-id: default, 297; MIR64-NEXT: callee-saved-register: '$f29', callee-saved-restored: true, debug-info-variable: '', 298; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 299; MIR64-NEXT: - { id: 3, type: spill-slot, offset: -32, size: 8, alignment: 16, stack-id: default, 300; MIR64-NEXT: callee-saved-register: '$f28', callee-saved-restored: true, debug-info-variable: '', 301; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 302; MIR64-NEXT: - { id: 4, type: spill-slot, offset: -40, size: 8, alignment: 8, stack-id: default, 303; MIR64-NEXT: callee-saved-register: '$f27', callee-saved-restored: true, debug-info-variable: '', 304; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 305; MIR64-NEXT: - { id: 5, type: spill-slot, offset: -48, size: 8, alignment: 16, stack-id: default, 306; MIR64-NEXT: callee-saved-register: '$f26', callee-saved-restored: true, debug-info-variable: '', 307; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 308; MIR64-NEXT: - { id: 6, type: spill-slot, offset: -56, size: 8, alignment: 8, stack-id: default, 309; MIR64-NEXT: callee-saved-register: '$f25', callee-saved-restored: true, debug-info-variable: '', 310; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 311; MIR64-NEXT: - { id: 7, type: spill-slot, offset: -64, size: 8, alignment: 16, stack-id: default, 312; MIR64-NEXT: callee-saved-register: '$f24', callee-saved-restored: true, debug-info-variable: '', 313; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 314; MIR64-NEXT: - { id: 8, type: spill-slot, offset: -72, size: 8, alignment: 8, stack-id: default, 315; MIR64-NEXT: callee-saved-register: '$f23', callee-saved-restored: true, debug-info-variable: '', 316; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 317; MIR64-NEXT: - { id: 9, type: spill-slot, offset: -80, size: 8, alignment: 16, stack-id: default, 318; MIR64-NEXT: callee-saved-register: '$f22', callee-saved-restored: true, debug-info-variable: '', 319; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 320; MIR64-NEXT: - { id: 10, type: spill-slot, offset: -88, size: 8, alignment: 8, stack-id: default, 321; MIR64-NEXT: callee-saved-register: '$f21', callee-saved-restored: true, debug-info-variable: '', 322; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 323; MIR64-NEXT: - { id: 11, type: spill-slot, offset: -96, size: 8, alignment: 16, stack-id: default, 324; MIR64-NEXT: callee-saved-register: '$f20', callee-saved-restored: true, debug-info-variable: '', 325; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 326; MIR64-NEXT: - { id: 12, type: spill-slot, offset: -104, size: 8, alignment: 8, stack-id: default, 327; MIR64-NEXT: callee-saved-register: '$f19', callee-saved-restored: true, debug-info-variable: '', 328; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 329; MIR64-NEXT: - { id: 13, type: spill-slot, offset: -112, size: 8, alignment: 16, stack-id: default, 330; MIR64-NEXT: callee-saved-register: '$f18', callee-saved-restored: true, debug-info-variable: '', 331; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 332; MIR64-NEXT: - { id: 14, type: spill-slot, offset: -120, size: 8, alignment: 8, stack-id: default, 333; MIR64-NEXT: callee-saved-register: '$f17', callee-saved-restored: true, debug-info-variable: '', 334; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 335; MIR64-NEXT: - { id: 15, type: spill-slot, offset: -128, size: 8, alignment: 16, stack-id: default, 336; MIR64-NEXT: callee-saved-register: '$f16', callee-saved-restored: true, debug-info-variable: '', 337; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 338; MIR64-NEXT: - { id: 16, type: spill-slot, offset: -136, size: 8, alignment: 8, stack-id: default, 339; MIR64-NEXT: callee-saved-register: '$f15', callee-saved-restored: true, debug-info-variable: '', 340; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 341; MIR64-NEXT: - { id: 17, type: spill-slot, offset: -144, size: 8, alignment: 16, stack-id: default, 342; MIR64-NEXT: callee-saved-register: '$f14', callee-saved-restored: true, debug-info-variable: '', 343; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 344; MIR64-NEXT: - { id: 18, type: spill-slot, offset: -152, size: 8, alignment: 8, stack-id: default, 345; MIR64-NEXT: callee-saved-register: '$x31', callee-saved-restored: true, debug-info-variable: '', 346; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 347; MIR64-NEXT: - { id: 19, type: spill-slot, offset: -160, size: 8, alignment: 16, stack-id: default, 348; MIR64-NEXT: callee-saved-register: '$x30', callee-saved-restored: true, debug-info-variable: '', 349; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 350; MIR64-NEXT: - { id: 20, type: spill-slot, offset: -168, size: 8, alignment: 8, stack-id: default, 351; MIR64-NEXT: callee-saved-register: '$x29', callee-saved-restored: true, debug-info-variable: '', 352; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 353; MIR64-NEXT: - { id: 21, type: spill-slot, offset: -176, size: 8, alignment: 16, stack-id: default, 354; MIR64-NEXT: callee-saved-register: '$x28', callee-saved-restored: true, debug-info-variable: '', 355; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 356; MIR64-NEXT: - { id: 22, type: spill-slot, offset: -184, size: 8, alignment: 8, stack-id: default, 357; MIR64-NEXT: callee-saved-register: '$x27', callee-saved-restored: true, debug-info-variable: '', 358; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 359; MIR64-NEXT: - { id: 23, type: spill-slot, offset: -192, size: 8, alignment: 16, stack-id: default, 360; MIR64-NEXT: callee-saved-register: '$x26', callee-saved-restored: true, debug-info-variable: '', 361; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 362; MIR64-NEXT: - { id: 24, type: spill-slot, offset: -200, size: 8, alignment: 8, stack-id: default, 363; MIR64-NEXT: callee-saved-register: '$x25', callee-saved-restored: true, debug-info-variable: '', 364; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 365; MIR64-NEXT: - { id: 25, type: spill-slot, offset: -208, size: 8, alignment: 16, stack-id: default, 366; MIR64-NEXT: callee-saved-register: '$x24', callee-saved-restored: true, debug-info-variable: '', 367; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 368; MIR64-NEXT: - { id: 26, type: spill-slot, offset: -216, size: 8, alignment: 8, stack-id: default, 369; MIR64-NEXT: callee-saved-register: '$x23', callee-saved-restored: true, debug-info-variable: '', 370; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 371; MIR64-NEXT: - { id: 27, type: spill-slot, offset: -224, size: 8, alignment: 16, stack-id: default, 372; MIR64-NEXT: callee-saved-register: '$x22', callee-saved-restored: true, debug-info-variable: '', 373; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 374; MIR64-NEXT: - { id: 28, type: spill-slot, offset: -232, size: 8, alignment: 8, stack-id: default, 375; MIR64-NEXT: callee-saved-register: '$x21', callee-saved-restored: true, debug-info-variable: '', 376; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 377; MIR64-NEXT: - { id: 29, type: spill-slot, offset: -240, size: 8, alignment: 16, stack-id: default, 378; MIR64-NEXT: callee-saved-register: '$x20', callee-saved-restored: true, debug-info-variable: '', 379; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 380; MIR64-NEXT: - { id: 30, type: spill-slot, offset: -248, size: 8, alignment: 8, stack-id: default, 381; MIR64-NEXT: callee-saved-register: '$x19', callee-saved-restored: true, debug-info-variable: '', 382; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 383; MIR64-NEXT: - { id: 31, type: spill-slot, offset: -256, size: 8, alignment: 16, stack-id: default, 384; MIR64-NEXT: callee-saved-register: '$x18', callee-saved-restored: true, debug-info-variable: '', 385; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 386; MIR64-NEXT: - { id: 32, type: spill-slot, offset: -264, size: 8, alignment: 8, stack-id: default, 387; MIR64-NEXT: callee-saved-register: '$x17', callee-saved-restored: true, debug-info-variable: '', 388; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 389; MIR64-NEXT: - { id: 33, type: spill-slot, offset: -272, size: 8, alignment: 16, stack-id: default, 390; MIR64-NEXT: callee-saved-register: '$x16', callee-saved-restored: true, debug-info-variable: '', 391; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 392; MIR64-NEXT: - { id: 34, type: spill-slot, offset: -280, size: 8, alignment: 8, stack-id: default, 393; MIR64-NEXT: callee-saved-register: '$x15', callee-saved-restored: true, debug-info-variable: '', 394; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 395; MIR64-NEXT: - { id: 35, type: spill-slot, offset: -288, size: 8, alignment: 16, stack-id: default, 396; MIR64-NEXT: callee-saved-register: '$x14', callee-saved-restored: true, debug-info-variable: '', 397; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' } 398; MIR64-NEXT: stack: [] 399 400; MIR32: name: fprs_and_gprs 401; MIR32-LABEL: fixedStack: 402; MIR32-NEXT: - { id: 0, type: spill-slot, offset: -8, size: 8, alignment: 8, stack-id: default, 403; MIR32-NEXT: callee-saved-register: '$f31', callee-saved-restored: true, debug-info-variable: '', 404; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 405; MIR32-NEXT: - { id: 1, type: spill-slot, offset: -16, size: 8, alignment: 16, stack-id: default, 406; MIR32-NEXT: callee-saved-register: '$f30', callee-saved-restored: true, debug-info-variable: '', 407; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 408; MIR32-NEXT: - { id: 2, type: spill-slot, offset: -24, size: 8, alignment: 8, stack-id: default, 409; MIR32-NEXT: callee-saved-register: '$f29', callee-saved-restored: true, debug-info-variable: '', 410; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 411; MIR32-NEXT: - { id: 3, type: spill-slot, offset: -32, size: 8, alignment: 16, stack-id: default, 412; MIR32-NEXT: callee-saved-register: '$f28', callee-saved-restored: true, debug-info-variable: '', 413; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 414; MIR32-NEXT: - { id: 4, type: spill-slot, offset: -40, size: 8, alignment: 8, stack-id: default, 415; MIR32-NEXT: callee-saved-register: '$f27', callee-saved-restored: true, debug-info-variable: '', 416; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 417; MIR32-NEXT: - { id: 5, type: spill-slot, offset: -48, size: 8, alignment: 16, stack-id: default, 418; MIR32-NEXT: callee-saved-register: '$f26', callee-saved-restored: true, debug-info-variable: '', 419; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 420; MIR32-NEXT: - { id: 6, type: spill-slot, offset: -56, size: 8, alignment: 8, stack-id: default, 421; MIR32-NEXT: callee-saved-register: '$f25', callee-saved-restored: true, debug-info-variable: '', 422; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 423; MIR32-NEXT: - { id: 7, type: spill-slot, offset: -64, size: 8, alignment: 16, stack-id: default, 424; MIR32-NEXT: callee-saved-register: '$f24', callee-saved-restored: true, debug-info-variable: '', 425; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 426; MIR32-NEXT: - { id: 8, type: spill-slot, offset: -72, size: 8, alignment: 8, stack-id: default, 427; MIR32-NEXT: callee-saved-register: '$f23', callee-saved-restored: true, debug-info-variable: '', 428; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 429; MIR32-NEXT: - { id: 9, type: spill-slot, offset: -80, size: 8, alignment: 16, stack-id: default, 430; MIR32-NEXT: callee-saved-register: '$f22', callee-saved-restored: true, debug-info-variable: '', 431; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 432; MIR32-NEXT: - { id: 10, type: spill-slot, offset: -88, size: 8, alignment: 8, stack-id: default, 433; MIR32-NEXT: callee-saved-register: '$f21', callee-saved-restored: true, debug-info-variable: '', 434; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 435; MIR32-NEXT: - { id: 11, type: spill-slot, offset: -96, size: 8, alignment: 16, stack-id: default, 436; MIR32-NEXT: callee-saved-register: '$f20', callee-saved-restored: true, debug-info-variable: '', 437; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 438; MIR32-NEXT: - { id: 12, type: spill-slot, offset: -104, size: 8, alignment: 8, stack-id: default, 439; MIR32-NEXT: callee-saved-register: '$f19', callee-saved-restored: true, debug-info-variable: '', 440; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 441; MIR32-NEXT: - { id: 13, type: spill-slot, offset: -112, size: 8, alignment: 16, stack-id: default, 442; MIR32-NEXT: callee-saved-register: '$f18', callee-saved-restored: true, debug-info-variable: '', 443; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 444; MIR32-NEXT: - { id: 14, type: spill-slot, offset: -120, size: 8, alignment: 8, stack-id: default, 445; MIR32-NEXT: callee-saved-register: '$f17', callee-saved-restored: true, debug-info-variable: '', 446; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 447; MIR32-NEXT: - { id: 15, type: spill-slot, offset: -128, size: 8, alignment: 16, stack-id: default, 448; MIR32-NEXT: callee-saved-register: '$f16', callee-saved-restored: true, debug-info-variable: '', 449; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 450; MIR32-NEXT: - { id: 16, type: spill-slot, offset: -136, size: 8, alignment: 8, stack-id: default, 451; MIR32-NEXT: callee-saved-register: '$f15', callee-saved-restored: true, debug-info-variable: '', 452; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 453; MIR32-NEXT: - { id: 17, type: spill-slot, offset: -144, size: 8, alignment: 16, stack-id: default, 454; MIR32-NEXT: callee-saved-register: '$f14', callee-saved-restored: true, debug-info-variable: '', 455; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 456; MIR32-NEXT: - { id: 18, type: spill-slot, offset: -148, size: 4, alignment: 4, stack-id: default, 457; MIR32-NEXT: callee-saved-register: '$r31', callee-saved-restored: true, debug-info-variable: '', 458; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 459; MIR32-NEXT: - { id: 19, type: spill-slot, offset: -152, size: 4, alignment: 8, stack-id: default, 460; MIR32-NEXT: callee-saved-register: '$r30', callee-saved-restored: true, debug-info-variable: '', 461; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 462; MIR32-NEXT: - { id: 20, type: spill-slot, offset: -156, size: 4, alignment: 4, stack-id: default, 463; MIR32-NEXT: callee-saved-register: '$r29', callee-saved-restored: true, debug-info-variable: '', 464; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 465; MIR32-NEXT: - { id: 21, type: spill-slot, offset: -160, size: 4, alignment: 16, stack-id: default, 466; MIR32-NEXT: callee-saved-register: '$r28', callee-saved-restored: true, debug-info-variable: '', 467; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 468; MIR32-NEXT: - { id: 22, type: spill-slot, offset: -164, size: 4, alignment: 4, stack-id: default, 469; MIR32-NEXT: callee-saved-register: '$r27', callee-saved-restored: true, debug-info-variable: '', 470; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 471; MIR32-NEXT: - { id: 23, type: spill-slot, offset: -168, size: 4, alignment: 8, stack-id: default, 472; MIR32-NEXT: callee-saved-register: '$r26', callee-saved-restored: true, debug-info-variable: '', 473; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 474; MIR32-NEXT: - { id: 24, type: spill-slot, offset: -172, size: 4, alignment: 4, stack-id: default, 475; MIR32-NEXT: callee-saved-register: '$r25', callee-saved-restored: true, debug-info-variable: '', 476; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 477; MIR32-NEXT: - { id: 25, type: spill-slot, offset: -176, size: 4, alignment: 16, stack-id: default, 478; MIR32-NEXT: callee-saved-register: '$r24', callee-saved-restored: true, debug-info-variable: '', 479; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 480; MIR32-NEXT: - { id: 26, type: spill-slot, offset: -180, size: 4, alignment: 4, stack-id: default, 481; MIR32-NEXT: callee-saved-register: '$r23', callee-saved-restored: true, debug-info-variable: '', 482; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 483; MIR32-NEXT: - { id: 27, type: spill-slot, offset: -184, size: 4, alignment: 8, stack-id: default, 484; MIR32-NEXT: callee-saved-register: '$r22', callee-saved-restored: true, debug-info-variable: '', 485; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 486; MIR32-NEXT: - { id: 28, type: spill-slot, offset: -188, size: 4, alignment: 4, stack-id: default, 487; MIR32-NEXT: callee-saved-register: '$r21', callee-saved-restored: true, debug-info-variable: '', 488; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 489; MIR32-NEXT: - { id: 29, type: spill-slot, offset: -192, size: 4, alignment: 16, stack-id: default, 490; MIR32-NEXT: callee-saved-register: '$r20', callee-saved-restored: true, debug-info-variable: '', 491; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 492; MIR32-NEXT: - { id: 30, type: spill-slot, offset: -196, size: 4, alignment: 4, stack-id: default, 493; MIR32-NEXT: callee-saved-register: '$r19', callee-saved-restored: true, debug-info-variable: '', 494; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 495; MIR32-NEXT: - { id: 31, type: spill-slot, offset: -200, size: 4, alignment: 8, stack-id: default, 496; MIR32-NEXT: callee-saved-register: '$r18', callee-saved-restored: true, debug-info-variable: '', 497; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 498; MIR32-NEXT: - { id: 32, type: spill-slot, offset: -204, size: 4, alignment: 4, stack-id: default, 499; MIR32-NEXT: callee-saved-register: '$r17', callee-saved-restored: true, debug-info-variable: '', 500; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 501; MIR32-NEXT: - { id: 33, type: spill-slot, offset: -208, size: 4, alignment: 16, stack-id: default, 502; MIR32-NEXT: callee-saved-register: '$r16', callee-saved-restored: true, debug-info-variable: '', 503; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 504; MIR32-NEXT: - { id: 34, type: spill-slot, offset: -212, size: 4, alignment: 4, stack-id: default, 505; MIR32-NEXT: callee-saved-register: '$r15', callee-saved-restored: true, debug-info-variable: '', 506; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 507; MIR32-NEXT: - { id: 35, type: spill-slot, offset: -216, size: 4, alignment: 8, stack-id: default, 508; MIR32-NEXT: callee-saved-register: '$r14', callee-saved-restored: true, debug-info-variable: '', 509; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 510; MIR32-NEXT: - { id: 36, type: spill-slot, offset: -220, size: 4, alignment: 4, stack-id: default, 511; MIR32-NEXT: callee-saved-register: '$r13', callee-saved-restored: true, debug-info-variable: '', 512; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' } 513; MIR32-NEXT: stack: [] 514 515 516; MIR64: liveins: $x3, $x14, $x15, $x16, $x17, $x18, $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $x29, $x30, $x31, $f14, $f15, $f16, $f17, $f18, $f19, $f20, $f21, $f22, $f23, $f24, $f25, $f26, $f27, $f28, $f29, $f30, $f31 517 518; MIR64: $x0 = MFLR8 implicit $lr8 519; MIR64-NEXT: $x1 = STDU $x1, -400, $x1 520; MIR64-NEXT: STD killed $x0, 416, $x1 521; MIR64-DAG: STD killed $x14, 112, $x1 :: (store (s64) into %fixed-stack.35, align 16) 522; MIR64-DAG: STD killed $x15, 120, $x1 :: (store (s64) into %fixed-stack.34) 523; MIR64-DAG: STD killed $x16, 128, $x1 :: (store (s64) into %fixed-stack.33, align 16) 524; MIR64-DAG: STD killed $x17, 136, $x1 :: (store (s64) into %fixed-stack.32) 525; MIR64-DAG: STD killed $x18, 144, $x1 :: (store (s64) into %fixed-stack.31, align 16) 526; MIR64-DAG: STD killed $x19, 152, $x1 :: (store (s64) into %fixed-stack.30) 527; MIR64-DAG: STD killed $x20, 160, $x1 :: (store (s64) into %fixed-stack.29, align 16) 528; MIR64-DAG: STD killed $x21, 168, $x1 :: (store (s64) into %fixed-stack.28) 529; MIR64-DAG: STD killed $x22, 176, $x1 :: (store (s64) into %fixed-stack.27, align 16) 530; MIR64-DAG: STD killed $x23, 184, $x1 :: (store (s64) into %fixed-stack.26) 531; MIR64-DAG: STD killed $x24, 192, $x1 :: (store (s64) into %fixed-stack.25, align 16) 532; MIR64-DAG: STD killed $x25, 200, $x1 :: (store (s64) into %fixed-stack.24) 533; MIR64-DAG: STD killed $x26, 208, $x1 :: (store (s64) into %fixed-stack.23, align 16) 534; MIR64-DAG: STD killed $x27, 216, $x1 :: (store (s64) into %fixed-stack.22) 535; MIR64-DAG: STD killed $x28, 224, $x1 :: (store (s64) into %fixed-stack.21, align 16) 536; MIR64-DAG: STD killed $x29, 232, $x1 :: (store (s64) into %fixed-stack.20) 537; MIR64-DAG: STD killed $x30, 240, $x1 :: (store (s64) into %fixed-stack.19, align 16) 538; MIR64-DAG: STD killed $x31, 248, $x1 :: (store (s64) into %fixed-stack.18) 539; MIR64-DAG: STFD killed $f14, 256, $x1 :: (store (s64) into %fixed-stack.17, align 16) 540; MIR64-DAG: STFD killed $f15, 264, $x1 :: (store (s64) into %fixed-stack.16) 541; MIR64-DAG: STFD killed $f16, 272, $x1 :: (store (s64) into %fixed-stack.15, align 16) 542; MIR64-DAG: STFD killed $f17, 280, $x1 :: (store (s64) into %fixed-stack.14) 543; MIR64-DAG: STFD killed $f18, 288, $x1 :: (store (s64) into %fixed-stack.13, align 16) 544; MIR64-DAG: STFD killed $f19, 296, $x1 :: (store (s64) into %fixed-stack.12) 545; MIR64-DAG: STFD killed $f20, 304, $x1 :: (store (s64) into %fixed-stack.11, align 16) 546; MIR64-DAG: STFD killed $f21, 312, $x1 :: (store (s64) into %fixed-stack.10) 547; MIR64-DAG: STFD killed $f22, 320, $x1 :: (store (s64) into %fixed-stack.9, align 16) 548; MIR64-DAG: STFD killed $f23, 328, $x1 :: (store (s64) into %fixed-stack.8) 549; MIR64-DAG: STFD killed $f24, 336, $x1 :: (store (s64) into %fixed-stack.7, align 16) 550; MIR64-DAG: STFD killed $f25, 344, $x1 :: (store (s64) into %fixed-stack.6) 551; MIR64-DAG: STFD killed $f26, 352, $x1 :: (store (s64) into %fixed-stack.5, align 16) 552; MIR64-DAG: STFD killed $f27, 360, $x1 :: (store (s64) into %fixed-stack.4) 553; MIR64-DAG: STFD killed $f28, 368, $x1 :: (store (s64) into %fixed-stack.3, align 16) 554; MIR64-DAG: STFD killed $f29, 376, $x1 :: (store (s64) into %fixed-stack.2) 555; MIR64-DAG: STFD killed $f30, 384, $x1 :: (store (s64) into %fixed-stack.1, align 16) 556; MIR64-DAG: STFD killed $f31, 392, $x1 :: (store (s64) into %fixed-stack.0) 557 558; MIR64: INLINEASM 559; MIR64-NEXT: BL8_NOP 560 561; MIR64-DAG: $f31 = LFD 392, $x1 :: (load (s64) from %fixed-stack.0) 562; MIR64-DAG: $f30 = LFD 384, $x1 :: (load (s64) from %fixed-stack.1, align 16) 563; MIR64-DAG: $f29 = LFD 376, $x1 :: (load (s64) from %fixed-stack.2) 564; MIR64-DAG: $f28 = LFD 368, $x1 :: (load (s64) from %fixed-stack.3, align 16) 565; MIR64-DAG: $f27 = LFD 360, $x1 :: (load (s64) from %fixed-stack.4) 566; MIR64-DAG: $f26 = LFD 352, $x1 :: (load (s64) from %fixed-stack.5, align 16) 567; MIR64-DAG: $f25 = LFD 344, $x1 :: (load (s64) from %fixed-stack.6) 568; MIR64-DAG: $f24 = LFD 336, $x1 :: (load (s64) from %fixed-stack.7, align 16) 569; MIR64-DAG: $f23 = LFD 328, $x1 :: (load (s64) from %fixed-stack.8) 570; MIR64-DAG: $f22 = LFD 320, $x1 :: (load (s64) from %fixed-stack.9, align 16) 571; MIR64-DAG: $f21 = LFD 312, $x1 :: (load (s64) from %fixed-stack.10) 572; MIR64-DAG: $f20 = LFD 304, $x1 :: (load (s64) from %fixed-stack.11, align 16) 573; MIR64-DAG: $f19 = LFD 296, $x1 :: (load (s64) from %fixed-stack.12) 574; MIR64-DAG: $f18 = LFD 288, $x1 :: (load (s64) from %fixed-stack.13, align 16) 575; MIR64-DAG: $f17 = LFD 280, $x1 :: (load (s64) from %fixed-stack.14) 576; MIR64-DAG: $f16 = LFD 272, $x1 :: (load (s64) from %fixed-stack.15, align 16) 577; MIR64-DAG: $f15 = LFD 264, $x1 :: (load (s64) from %fixed-stack.16) 578; MIR64-DAG: $f14 = LFD 256, $x1 :: (load (s64) from %fixed-stack.17, align 16) 579; MIR64-DAG: $x31 = LD 248, $x1 :: (load (s64) from %fixed-stack.18) 580; MIR64-DAG: $x30 = LD 240, $x1 :: (load (s64) from %fixed-stack.19, align 16) 581; MIR64-DAG: $x29 = LD 232, $x1 :: (load (s64) from %fixed-stack.20) 582; MIR64-DAG: $x28 = LD 224, $x1 :: (load (s64) from %fixed-stack.21, align 16) 583; MIR64-DAG: $x27 = LD 216, $x1 :: (load (s64) from %fixed-stack.22) 584; MIR64-DAG: $x26 = LD 208, $x1 :: (load (s64) from %fixed-stack.23, align 16) 585; MIR64-DAG: $x25 = LD 200, $x1 :: (load (s64) from %fixed-stack.24) 586; MIR64-DAG: $x24 = LD 192, $x1 :: (load (s64) from %fixed-stack.25, align 16) 587; MIR64-DAG: $x23 = LD 184, $x1 :: (load (s64) from %fixed-stack.26) 588; MIR64-DAG: $x22 = LD 176, $x1 :: (load (s64) from %fixed-stack.27, align 16) 589; MIR64-DAG: $x21 = LD 168, $x1 :: (load (s64) from %fixed-stack.28) 590; MIR64-DAG: $x20 = LD 160, $x1 :: (load (s64) from %fixed-stack.29, align 16) 591; MIR64-DAG: $x19 = LD 152, $x1 :: (load (s64) from %fixed-stack.30) 592; MIR64-DAG: $x18 = LD 144, $x1 :: (load (s64) from %fixed-stack.31, align 16) 593; MIR64-DAG: $x17 = LD 136, $x1 :: (load (s64) from %fixed-stack.32) 594; MIR64-DAG: $x16 = LD 128, $x1 :: (load (s64) from %fixed-stack.33, align 16) 595; MIR64-DAG: $x15 = LD 120, $x1 :: (load (s64) from %fixed-stack.34) 596; MIR64-DAG: $x14 = LD 112, $x1 :: (load (s64) from %fixed-stack.35, align 16) 597 598; MIR64: $x1 = ADDI8 $x1, 400 599; MIR64-NEXT: $x0 = LD 16, $x1 600; MIR64-NEXT: MTLR8 $x0, implicit-def $lr8 601; MIR64-NEXT: BLR8 implicit $lr8, implicit $rm, implicit $f1 602 603; MIR32: liveins: $r3, $r13, $r14, $r15, $r16, $r17, $r18, $r19, $r20, $r21, $r22, $r23, $r24, $r25, $r26, $r27, $r28, $r29, $r30, $r31, $f14, $f15, $f16, $f17, $f18, $f19, $f20, $f21, $f22, $f23, $f24, $f25, $f26, $f27, $f28, $f29, $f30, $f31 604 605; MIR32: $r0 = MFLR implicit $lr 606; MIR32-NEXT: $r1 = STWU $r1, -288, $r1 607; MIR32-NEXT: STW killed $r0, 296, $r1 608; MIR32-DAG: STW killed $r13, 68, $r1 :: (store (s32) into %fixed-stack.36) 609; MIR32-DAG: STW killed $r14, 72, $r1 :: (store (s32) into %fixed-stack.35, align 8) 610; MIR32-DAG: STW killed $r15, 76, $r1 :: (store (s32) into %fixed-stack.34) 611; MIR32-DAG: STW killed $r16, 80, $r1 :: (store (s32) into %fixed-stack.33, align 16) 612; MIR32-DAG: STW killed $r17, 84, $r1 :: (store (s32) into %fixed-stack.32) 613; MIR32-DAG: STW killed $r18, 88, $r1 :: (store (s32) into %fixed-stack.31, align 8) 614; MIR32-DAG: STW killed $r19, 92, $r1 :: (store (s32) into %fixed-stack.30) 615; MIR32-DAG: STW killed $r20, 96, $r1 :: (store (s32) into %fixed-stack.29, align 16) 616; MIR32-DAG: STW killed $r21, 100, $r1 :: (store (s32) into %fixed-stack.28) 617; MIR32-DAG: STW killed $r22, 104, $r1 :: (store (s32) into %fixed-stack.27, align 8) 618; MIR32-DAG: STW killed $r23, 108, $r1 :: (store (s32) into %fixed-stack.26) 619; MIR32-DAG: STW killed $r24, 112, $r1 :: (store (s32) into %fixed-stack.25, align 16) 620; MIR32-DAG: STW killed $r25, 116, $r1 :: (store (s32) into %fixed-stack.24) 621; MIR32-DAG: STW killed $r26, 120, $r1 :: (store (s32) into %fixed-stack.23, align 8) 622; MIR32-DAG: STW killed $r27, 124, $r1 :: (store (s32) into %fixed-stack.22) 623; MIR32-DAG: STW killed $r28, 128, $r1 :: (store (s32) into %fixed-stack.21, align 16) 624; MIR32-DAG: STW killed $r29, 132, $r1 :: (store (s32) into %fixed-stack.20) 625; MIR32-DAG: STW killed $r30, 136, $r1 :: (store (s32) into %fixed-stack.19, align 8) 626; MIR32-DAG: STW killed $r31, 140, $r1 :: (store (s32) into %fixed-stack.18) 627; MIR32-DAG: STFD killed $f14, 144, $r1 :: (store (s64) into %fixed-stack.17, align 16) 628; MIR32-DAG: STFD killed $f15, 152, $r1 :: (store (s64) into %fixed-stack.16) 629; MIR32-DAG: STFD killed $f16, 160, $r1 :: (store (s64) into %fixed-stack.15, align 16) 630; MIR32-DAG: STFD killed $f17, 168, $r1 :: (store (s64) into %fixed-stack.14) 631; MIR32-DAG: STFD killed $f18, 176, $r1 :: (store (s64) into %fixed-stack.13, align 16) 632; MIR32-DAG: STFD killed $f19, 184, $r1 :: (store (s64) into %fixed-stack.12) 633; MIR32-DAG: STFD killed $f20, 192, $r1 :: (store (s64) into %fixed-stack.11, align 16) 634; MIR32-DAG: STFD killed $f21, 200, $r1 :: (store (s64) into %fixed-stack.10) 635; MIR32-DAG: STFD killed $f22, 208, $r1 :: (store (s64) into %fixed-stack.9, align 16) 636; MIR32-DAG: STFD killed $f23, 216, $r1 :: (store (s64) into %fixed-stack.8) 637; MIR32-DAG: STFD killed $f24, 224, $r1 :: (store (s64) into %fixed-stack.7, align 16) 638; MIR32-DAG: STFD killed $f25, 232, $r1 :: (store (s64) into %fixed-stack.6) 639; MIR32-DAG: STFD killed $f26, 240, $r1 :: (store (s64) into %fixed-stack.5, align 16) 640; MIR32-DAG: STFD killed $f27, 248, $r1 :: (store (s64) into %fixed-stack.4) 641; MIR32-DAG: STFD killed $f28, 256, $r1 :: (store (s64) into %fixed-stack.3, align 16) 642; MIR32-DAG: STFD killed $f29, 264, $r1 :: (store (s64) into %fixed-stack.2) 643; MIR32-DAG: STFD killed $f30, 272, $r1 :: (store (s64) into %fixed-stack.1, align 16) 644; MIR32-DAG: STFD killed $f31, 280, $r1 :: (store (s64) into %fixed-stack.0) 645 646; MIR32: INLINEASM 647; MIR32: BL_NOP 648 649; MIR32-DAG: $f31 = LFD 280, $r1 :: (load (s64) from %fixed-stack.0) 650; MIR32-DAG: $f30 = LFD 272, $r1 :: (load (s64) from %fixed-stack.1, align 16) 651; MIR32-DAG: $f29 = LFD 264, $r1 :: (load (s64) from %fixed-stack.2) 652; MIR32-DAG: $f28 = LFD 256, $r1 :: (load (s64) from %fixed-stack.3, align 16) 653; MIR32-DAG: $f27 = LFD 248, $r1 :: (load (s64) from %fixed-stack.4) 654; MIR32-DAG: $f26 = LFD 240, $r1 :: (load (s64) from %fixed-stack.5, align 16) 655; MIR32-DAG: $f25 = LFD 232, $r1 :: (load (s64) from %fixed-stack.6) 656; MIR32-DAG: $f24 = LFD 224, $r1 :: (load (s64) from %fixed-stack.7, align 16) 657; MIR32-DAG: $f23 = LFD 216, $r1 :: (load (s64) from %fixed-stack.8) 658; MIR32-DAG: $f22 = LFD 208, $r1 :: (load (s64) from %fixed-stack.9, align 16) 659; MIR32-DAG: $f21 = LFD 200, $r1 :: (load (s64) from %fixed-stack.10) 660; MIR32-DAG: $f20 = LFD 192, $r1 :: (load (s64) from %fixed-stack.11, align 16) 661; MIR32-DAG: $f19 = LFD 184, $r1 :: (load (s64) from %fixed-stack.12) 662; MIR32-DAG: $f18 = LFD 176, $r1 :: (load (s64) from %fixed-stack.13, align 16) 663; MIR32-DAG: $f17 = LFD 168, $r1 :: (load (s64) from %fixed-stack.14) 664; MIR32-DAG: $f16 = LFD 160, $r1 :: (load (s64) from %fixed-stack.15, align 16) 665; MIR32-DAG: $f15 = LFD 152, $r1 :: (load (s64) from %fixed-stack.16) 666; MIR32-DAG: $f14 = LFD 144, $r1 :: (load (s64) from %fixed-stack.17, align 16) 667; MIR32-DAG: $r31 = LWZ 140, $r1 :: (load (s32) from %fixed-stack.18) 668; MIR32-DAG: $r30 = LWZ 136, $r1 :: (load (s32) from %fixed-stack.19, align 8) 669; MIR32-DAG: $r29 = LWZ 132, $r1 :: (load (s32) from %fixed-stack.20) 670; MIR32-DAG: $r28 = LWZ 128, $r1 :: (load (s32) from %fixed-stack.21, align 16) 671; MIR32-DAG: $r27 = LWZ 124, $r1 :: (load (s32) from %fixed-stack.22) 672; MIR32-DAG: $r26 = LWZ 120, $r1 :: (load (s32) from %fixed-stack.23, align 8) 673; MIR32-DAG: $r25 = LWZ 116, $r1 :: (load (s32) from %fixed-stack.24) 674; MIR32-DAG: $r24 = LWZ 112, $r1 :: (load (s32) from %fixed-stack.25, align 16) 675; MIR32-DAG: $r23 = LWZ 108, $r1 :: (load (s32) from %fixed-stack.26) 676; MIR32-DAG: $r22 = LWZ 104, $r1 :: (load (s32) from %fixed-stack.27, align 8) 677; MIR32-DAG: $r21 = LWZ 100, $r1 :: (load (s32) from %fixed-stack.28) 678; MIR32-DAG: $r20 = LWZ 96, $r1 :: (load (s32) from %fixed-stack.29, align 16) 679; MIR32-DAG: $r19 = LWZ 92, $r1 :: (load (s32) from %fixed-stack.30) 680; MIR32-DAG: $r18 = LWZ 88, $r1 :: (load (s32) from %fixed-stack.31, align 8) 681; MIR32-DAG: $r17 = LWZ 84, $r1 :: (load (s32) from %fixed-stack.32) 682; MIR32-DAG: $r16 = LWZ 80, $r1 :: (load (s32) from %fixed-stack.33, align 16) 683; MIR32-DAG: $r15 = LWZ 76, $r1 :: (load (s32) from %fixed-stack.34) 684; MIR32-DAG: $r14 = LWZ 72, $r1 :: (load (s32) from %fixed-stack.35, align 8) 685; MIR32-DAG: $r13 = LWZ 68, $r1 :: (load (s32) from %fixed-stack.36) 686; MIR32: $r1 = ADDI $r1, 288 687; MIR32-NEXT: $r0 = LWZ 8, $r1 688; MIR32-NEXT: MTLR $r0, implicit-def $lr 689; MIR32-NEXT: BLR implicit $lr, implicit $rm, implicit $f1 690 691; ASM64-LABEL: .fprs_and_gprs: 692; ASM64: mflr 0 693; ASM64-NEXT: stdu 1, -400(1) 694; ASM64-NEXT: std 0, 416(1) 695; ASM64-DAG: std 14, 112(1) # 8-byte Folded Spill 696; ASM64-DAG: std 15, 120(1) # 8-byte Folded Spill 697; ASM64-DAG: std 16, 128(1) # 8-byte Folded Spill 698; ASM64-DAG: std 17, 136(1) # 8-byte Folded Spill 699; ASM64-DAG: std 18, 144(1) # 8-byte Folded Spill 700; ASM64-DAG: std 19, 152(1) # 8-byte Folded Spill 701; ASM64-DAG: std 20, 160(1) # 8-byte Folded Spill 702; ASM64-DAG: std 21, 168(1) # 8-byte Folded Spill 703; ASM64-DAG: std 22, 176(1) # 8-byte Folded Spill 704; ASM64-DAG: std 23, 184(1) # 8-byte Folded Spill 705; ASM64-DAG: std 24, 192(1) # 8-byte Folded Spill 706; ASM64-DAG: std 25, 200(1) # 8-byte Folded Spill 707; ASM64-DAG: std 26, 208(1) # 8-byte Folded Spill 708; ASM64-DAG: std 27, 216(1) # 8-byte Folded Spill 709; ASM64-DAG: std 28, 224(1) # 8-byte Folded Spill 710; ASM64-DAG: std 29, 232(1) # 8-byte Folded Spill 711; ASM64-DAG: std 30, 240(1) # 8-byte Folded Spill 712; ASM64-DAG: std 31, 248(1) # 8-byte Folded Spill 713; ASM64-DAG: stfd 14, 256(1) # 8-byte Folded Spill 714; ASM64-DAG: stfd 15, 264(1) # 8-byte Folded Spill 715; ASM64-DAG: stfd 16, 272(1) # 8-byte Folded Spill 716; ASM64-DAG: stfd 17, 280(1) # 8-byte Folded Spill 717; ASM64-DAG: stfd 18, 288(1) # 8-byte Folded Spill 718; ASM64-DAG: stfd 19, 296(1) # 8-byte Folded Spill 719; ASM64-DAG: stfd 20, 304(1) # 8-byte Folded Spill 720; ASM64-DAG: stfd 21, 312(1) # 8-byte Folded Spill 721; ASM64-DAG: stfd 22, 320(1) # 8-byte Folded Spill 722; ASM64-DAG: stfd 23, 328(1) # 8-byte Folded Spill 723; ASM64-DAG: stfd 24, 336(1) # 8-byte Folded Spill 724; ASM64-DAG: stfd 25, 344(1) # 8-byte Folded Spill 725; ASM64-DAG: stfd 26, 352(1) # 8-byte Folded Spill 726; ASM64-DAG: stfd 27, 360(1) # 8-byte Folded Spill 727; ASM64-DAG: stfd 28, 368(1) # 8-byte Folded Spill 728; ASM64-DAG: stfd 29, 376(1) # 8-byte Folded Spill 729; ASM64-DAG: stfd 30, 384(1) # 8-byte Folded Spill 730; ASM64-DAG: stfd 31, 392(1) # 8-byte Folded Spill 731 732; ASM64: bl .dummy 733; ASM64-DAG: lfd 31, 392(1) # 8-byte Folded Reload 734; ASM64-DAG: lfd 30, 384(1) # 8-byte Folded Reload 735; ASM64-DAG: lfd 29, 376(1) # 8-byte Folded Reload 736; ASM64-DAG: lfd 28, 368(1) # 8-byte Folded Reload 737; ASM64-DAG: lfd 27, 360(1) # 8-byte Folded Reload 738; ASM64-DAG: lfd 26, 352(1) # 8-byte Folded Reload 739; ASM64-DAG: lfd 25, 344(1) # 8-byte Folded Reload 740; ASM64-DAG: lfd 24, 336(1) # 8-byte Folded Reload 741; ASM64-DAG: lfd 23, 328(1) # 8-byte Folded Reload 742; ASM64-DAG: lfd 22, 320(1) # 8-byte Folded Reload 743; ASM64-DAG: lfd 21, 312(1) # 8-byte Folded Reload 744; ASM64-DAG: lfd 20, 304(1) # 8-byte Folded Reload 745; ASM64-DAG: lfd 19, 296(1) # 8-byte Folded Reload 746; ASM64-DAG: lfd 18, 288(1) # 8-byte Folded Reload 747; ASM64-DAG: lfd 17, 280(1) # 8-byte Folded Reload 748; ASM64-DAG: lfd 16, 272(1) # 8-byte Folded Reload 749; ASM64-DAG: lfd 15, 264(1) # 8-byte Folded Reload 750; ASM64-DAG: lfd 14, 256(1) # 8-byte Folded Reload 751; ASM64-DAG: ld 31, 248(1) # 8-byte Folded Reload 752; ASM64-DAG: ld 30, 240(1) # 8-byte Folded Reload 753; ASM64-DAG: ld 29, 232(1) # 8-byte Folded Reload 754; ASM64-DAG: ld 28, 224(1) # 8-byte Folded Reload 755; ASM64-DAG: ld 27, 216(1) # 8-byte Folded Reload 756; ASM64-DAG: ld 26, 208(1) # 8-byte Folded Reload 757; ASM64-DAG: ld 25, 200(1) # 8-byte Folded Reload 758; ASM64-DAG: ld 24, 192(1) # 8-byte Folded Reload 759; ASM64-DAG: ld 23, 184(1) # 8-byte Folded Reload 760; ASM64-DAG: ld 22, 176(1) # 8-byte Folded Reload 761; ASM64-DAG: ld 21, 168(1) # 8-byte Folded Reload 762; ASM64-DAG: ld 20, 160(1) # 8-byte Folded Reload 763; ASM64-DAG: ld 19, 152(1) # 8-byte Folded Reload 764; ASM64-DAG: ld 18, 144(1) # 8-byte Folded Reload 765; ASM64-DAG: ld 17, 136(1) # 8-byte Folded Reload 766; ASM64-DAG: ld 16, 128(1) # 8-byte Folded Reload 767; ASM64-DAG: ld 15, 120(1) # 8-byte Folded Reload 768; ASM64-DAG: ld 14, 112(1) # 8-byte Folded Reload 769 770; ASM64: addi 1, 1, 400 771; ASM64-NEXT: ld 0, 16(1) 772; ASM64-NEXT: mtlr 0 773; ASM64-NEXT: blr 774 775; ASM32-LABEL: .fprs_and_gprs: 776; ASM32: mflr 0 777; ASM32-NEXT: stwu 1, -288(1) 778; ASM32-NEXT: stw 0, 296(1) 779; ASM32-DAG: stw 13, 68(1) # 4-byte Folded Spill 780; ASM32-DAG: stw 14, 72(1) # 4-byte Folded Spill 781; ASM32-DAG: stw 25, 116(1) # 4-byte Folded Spill 782; ASM32-DAG: stw 31, 140(1) # 4-byte Folded Spill 783; ASM32-DAG: stfd 14, 144(1) # 8-byte Folded Spill 784; ASM32-DAG: stfd 19, 184(1) # 8-byte Folded Spill 785; ASM32-DAG: stfd 21, 200(1) # 8-byte Folded Spill 786; ASM32-DAG: stfd 31, 280(1) # 8-byte Folded Spill 787 788; ASM32-DAG: bl .dummy 789 790; ASM32-DAG: lfd 31, 280(1) # 8-byte Folded Reload 791; ASM32-DAG: lfd 21, 200(1) # 8-byte Folded Reload 792; ASM32-DAG: lfd 19, 184(1) # 8-byte Folded Reload 793; ASM32-DAG: lfd 14, 144(1) # 8-byte Folded Reload 794; ASM32-DAG: lwz 31, 140(1) # 4-byte Folded Reload 795; ASM32-DAG: lwz 25, 116(1) # 4-byte Folded Reload 796; ASM32-DAG: lwz 14, 72(1) # 4-byte Folded Reload 797; ASM32-DAG: lwz 13, 68(1) # 4-byte Folded Reload 798; ASM32: addi 1, 1, 288 799; ASM32-NEXT: lwz 0, 8(1) 800; ASM32-NEXT: mtlr 0 801; ASM32-NEXT: blr 802